目次
前提
- OS:CentOS7 を使用(yum や wget コマンドが利用できる状況にあること)
- 操作しているユーザーは wheel グループに追加してパスワードなし設定済み(必須の設定ではありません。操作便宜上の前提です)
インストール手順
インストールしたいバージョンの rpm を以下よりダウンロード
https://download.konghq.com/gateway-2.x-centos-7/Packages/k/
外に通信可能なサーバーであれば wget コマンドで直接 rpm を取ることも可能
wget https://download.konghq.com/gateway-2.x-centos-7/Packages/k/kong-enterprise-edition-2.7.0.0.el7.noarch.rpm
yum コマンドでインストール
rpm コマンドでもインストールできますが、yum コマンドであればパッケージの依存関係(zlib-devel パッケージなど)を自動的に解決してインストールすることができます。
yum -y install kong-enterprise-edition-2.7.0.0.el7.noarch.rpm
データーベースをインストール
PostgreSQL グローバル開発グループ(PGDG)のリポジトリを追加
yum -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
PostgreSQL のデータベースをインストール
yum -y install postgresql10-server
データーベースのセットアップ
データーベースを初期化
/usr/pgsql-10/bin/postgresql-10-setup initdb
データーベースを起動
システム起動時にデーターベースが起動するように設定
systemctl enable postgresql-10
Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql-10.service to /usr/lib/systemd/system/postgresql-10.service.
systemctl list-unit-files -t service | grep postgres
postgresql-10.service enabled
データーベースを起動して、プロセスの起動状況を確認
systemctl start postgresql-10
ps ax | grep [p]ostgres
15416 ? Ss 0:00 postgres: logger process
15418 ? Ss 0:00 postgres: checkpointer process
15419 ? Ss 0:00 postgres: writer process
15420 ? Ss 0:00 postgres: wal writer process
15421 ? Ss 0:00 postgres: autovacuum launcher process
15422 ? Ss 0:00 postgres: stats collector process
15423 ? Ss 0:00 postgres: bgworker: logical replication launcher
$
データーベースの起動状態確認
systemctl status postgresql-10
● postgresql-10.service - PostgreSQL 10 database server
Loaded: loaded (/usr/lib/systemd/system/postgresql-10.service; enabled; vendor preset: disabled)
Active: active (running) since 月 2021-12-13 16:49:24 JST; 1min 32s ago
Docs: <https://www.postgresql.org/docs/10/static/>
Main PID: 14786 (postmaster)
CGroup: /system.slice/postgresql-10.service
├─14786 /usr/pgsql-10/bin/postmaster -D /var/lib/pgsql/10/data/
├─14788 postgres: logger process
├─14790 postgres: checkpointer process
├─14791 postgres: writer process
├─14792 postgres: wal writer process
├─14793 postgres: autovacuum launcher process
├─14794 postgres: stats collector process
└─14795 postgres: bgworker: logical replication launcher
12月 13 16:49:24 kong-dp systemd[1]: Starting PostgreSQL 10 database server...
12月 13 16:49:24 kong-dp postmaster[14786]: 2021-12-13 16:49:24.911 JST [14786] LOG: IPv6アドレス"::1"、ポート543…います
12月 13 16:49:24 kong-dp postmaster[14786]: 2021-12-13 16:49:24.911 JST [14786] LOG: IPv4アドレス"127.0.0.1"、ポー…います
12月 13 16:49:24 kong-dp postmaster[14786]: 2021-12-13 16:49:24.911 JST [14786] LOG: Unixソケット"/var/run/postgr…います
12月 13 16:49:24 kong-dp postmaster[14786]: 2021-12-13 16:49:24.912 JST [14786] LOG: Unixソケット"/tmp/.s.PGSQL.5…います
12月 13 16:49:24 kong-dp postmaster[14786]: 2021-12-13 16:49:24.926 JST [14786] LOG: ログ出力をログ収集プロセスに…います
12月 13 16:49:24 kong-dp postmaster[14786]: 2021-12-13 16:49:24.926 JST [14786] ヒント: ここからのログ出力はディレ…ます。
12月 13 16:49:24 kong-dp systemd[1]: Started PostgreSQL 10 database server.
Hint: Some lines were ellipsized, use -l to show in full.
$
Kong のデータベースを作成
データベースに postgres ユーザーでアクセス
su - postgres
最終ログイン: 2021/12/13 (月) 16:52:20 JST日時 pts/0
-bash-4.2$ psql
psql (10.19)
"help" でヘルプを表示します。
kong 用のデーターベースを作成します。kong のデータベースを作成後、alter コマンドで kong ユーザのパスワードを設定しておきます(例では kong)。この設定をしないと、この後の pg_hba.conf ファイルの md5 認証でうまく DB アクセスできなくなるので注意が必要です。
postgres=# create user kong; create database kong owner kong;
CREATE ROLE
CREATE DATABASE
postgres=# alter user kong with password 'kong';
ALTER ROLE
postgres=# \q
-bash-4.2$ exit
PostgreSQL の Ident 認証を変更
pg_hba.conf ファイルをバックしておきます。
cp -p /var/lib/pgsql/10/data/pg_hba.conf /var/lib/pgsql/10/data/pg_hba.conf.org
pg_hba.conf ファイルを編集してデーターベースの認証方法を変更します。
vi /var/lib/pgsql/10/data/pg_hba.conf
IPv4 の認証 METHOD を md5 にしておきます。
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
#host all all 127.0.0.1/32 ident
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 ident
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication all peer
host replication all 127.0.0.1/32 ident
host replication all ::1/128 ident
編集してファイルを保存したら、PostgreSQL を再起動します。
systemctl restart postgresql-10
テンプレートの kong.conf.default をコピーして kong.conf ファイルを作成し、編集します。
cp -p /etc/kong/kong.conf.default /etc/kong/kong.conf
vi /etc/kong/kong.conf
下記パラメーターを有効にして以下のように編集しておきます。
pg_user = kong
pg_password = kong
pg_database = kong
limits.conf でファイルディスクリプタの値を変更
limits.conf ファイルのバックアップを取ったあと、値を変更します。
cp -p /etc/security/limits.conf /etc/security/limits.conf.org
echo "* hard nofile 4096" >> /etc/security/limits.conf
echo "* soft nofile 4096" >> /etc/security/limits.conf
reboot
再起動後に値が更新されているか以下で確認。上記で設定した 4096 が出力されればOK。
ulimit -n
bootstrap を実行
# su - kong
最終ログイン: 2021/12/13 (月) 17:50:19 JST日時 pts/0
-sh-4.2$ export KONG_PASSWORD=kong
-sh-4.2$ echo $KONG_PASSWORD
kong
-sh-4.2$ kong migrations bootstrap -c /etc/kong/kong.conf
Bootstrapping database...
migrating core on database 'kong'...
core migrated up to: 000_base (executed)
core migrated up to: 003_100_to_110 (executed)
(途中省略)
80 migrations processed
80 executed
Database is up-to-date
-sh-4.2$
ライセンスの適用(持っている場合のみ。それ以外はスキップ)
Kong の有償ユーザーでライセンスを持っている場合は以下の手順でライセンスを適用します。なお、下記ライセンスファイルの内容はダミーとなっているため機能しません。
# cat kong-se-license.json
{"license":{"version":1,"signature":"","payload":{}}}
# cp kong-se-license.json /etc/kong/license.json
# ll /etc/kong/license.json
-rw-r--r-- 1 root root 450 Dec 9 14:41 /etc/kong/license.json
# chown kong.kong /etc/kong/license.json
#
Kong 起動
kong start -c /etc/kong/kong.conf
動作チェック
AdminAPI で以下のように :8001/services エンドポイントなどにアクセスし、HTTP ステータスコード 200 が返れば Kong は動作しています。
# curl -i -X GET --url http://localhost:8001/services
HTTP/1.1 200 OK
Date: Mon, 13 Dec 2021 09:05:47 GMT
Content-Type: application/json; charset=utf-8
Connection: keep-alive
Access-Control-Allow-Origin: *
X-Kong-Admin-Request-ID: oFor2SaXeZZehXI1jI3Gk7YmVP83tTIA
vary: Origin
Content-Length: 23
X-Kong-Admin-Latency: 12
Server: kong/2.4.1.1-enterprise-edition
{"data":[],"next":null}
#
よくあるエラー
kong migrations bootstrap でエラーが出る場合(1)
エラーメッセージ内容のとおりですが、この例では オープンできるファイル数(ulimit -n)が現在の設定値(1024)では低いことを示しています。該当する場合はメッセージのとおり、少なくとも 4096 以上に設定しましょう。また、PostgreSQL で Ident 認証(md5 設定時)に失敗したこのケースでは、PostgreSQL の kong ユーザのパスワードを設定していなかったため生じていました。 詳細は後述する(2)のケースを参照ください。
kong migrations bootstrap
2021/12/13 16:54:08 [warn] ulimit is currently set to "1024". For better performance set it to at least "4096" using "ulimit -n"
Error: [PostgreSQL error] failed to retrieve PostgreSQL server_version_num: FATAL: ユーザ"kong"のIdent認証に失敗しました
Run with --v (verbose) or --vv (debug) for more details
また、ここで Permission denied などが出る人はメッセージ内容をよく確認してください。よくあるケースとして、root 相当の権限がなく、必要なディレクトリが作成できていない場合があります。
kong migrations bootstrap でエラーが出る場合(2)
pg_hba.conf で md5 を設定しても以下のようなエラーが出る場合は、kong データーベース作成時に kong ユーザーのパスワードを設定(alter user kong with password ‘kong’;)していない可能性があります。postgres ユーザーで psql -U kong kong を実行し、kong ユーザーで kong データーベースにアクセスできるか確認してください。アクセスできない場合は、alter コマンドで kong ユーザーのパスワードを設定し直してみてください。
-sh-4.2$ kong migrations bootstrap -c /etc/kong/kong.conf
Error: [PostgreSQL error] failed to retrieve PostgreSQL server_version_num: FATAL: ユーザ"kong"のパスワード認証に失敗しまし
た