快乐学习 一个网站喵查铺子(catpuzi.com)全搞定~

kong-以cassandra作为配置源安装

文章目录[隐藏]

题目:kong-以cassandra作为配置源安装

延续上一篇,《kong-以conf文件作为配置源安装》,本篇主要讲解以数据库作为配置源安装。kong以数据库作为配置源有两种选择,一种是postgreSql,一种是cassandra。主要是基于如下考虑,既然采用数据库作为配置源,若强调参数的集中管控和可视化,可以选用postgreSql,若是强调参数的安全性和兼顾微服务下的无状态,则可以选用cassandra。我这次是打算将网关应用于微服务框架,所以就选择cassandra了,还有一处小私心,我在很久以前玩过postgreSql,所以这次就借机会折腾下cassandra了。

有些内容与之前的一篇有些重叠,主要是不想在做cassandra安装时,还需要参考上一篇内容,所以就适度冗余了,反正都是自己写的。

目录
安装openssl
下载lua-kong-nginx-module
安装OpenResty
安装lua-kong-nginx-module
安装Luarocks
安装kong
安装Cassandra
启动cassandra
操作cassandra
配置kong
启动kong

安装openssl

下载openssl的源码包

cd /opt/app/software/openssl
wget -R -O https://www.openssl.org/source/openssl-1.1.1g.tar.gz
tar xvzf openssl-1.1.1g.tar.gz

安装,指定安装目录为 /opt/app/openssl。

cd openssl-1.1.1g
./config --prefix=/opt/app/openssl
 
make
make install

下载lua-kong-nginx-module

下载此模块,编译OpenResty时会用到。

cd /opt/app/software/kong
wget -R -O https://github.com/Kong/lua-kong-nginx-module/archive/0.0.6.tar.gz
tar xvzf 0.0.6.tar.gz

安装OpenResty

下载OpenResty的源码包

cd /opt/app/software/kong
wget -R -O https://openresty.org/download/openresty-1.15.8.3.tar.gz
tar xvfz openresty-1.15.8.3.tar.gz

安装,指定安装目录为 /opt/app/kong/openresty。其中-j2是指所部署服务器的CPU数量,方便进行系统优化,也可以不指定。

cd openresty-1.15.8.3
./configure -j2 --prefix=/opt/app/kong/openresty  --with-pcre-jit --with-http_ssl_module --with-http_realip_module --with-http_stub_status_module --with-http_v2_module --with-openssl=/opt/app/software/openssl/openssl-1.1.1g --add-module=/opt/app/software/kong/lua-kong-nginx-module-0.0.6/
make -j2
make install

配置环境变量。

cd ..
cp openresty.env /opt/app/kong/openresty/
echo "" >> ~/.bashrc
echo "# openresty env" >> ~/.bashrc
echo ". /opt/app/kong/openresty/openresty.env" >> ~/.bashrc

环境变量文件 openresty.env 内容和格式如下:

# add openresty path
export PATH=/opt/app/kong/openresty/bin:/opt/app/openresty/nginx/sbin:$PATH

测试

. ~/.bashrc
 
openresty -h

安装lua-kong-nginx-module

安装lua-kong-nginx-module模块

cd /opt/app/software/kong/lua-kong-nginx-module-0.0.6
make install LUA_LIB_DIR=/opt/app/kong/openresty/lualib
安装Luarocks
luarocks是lua的包管理器,可以对标于python的pip。

下载


cd /opt/app/software/kong
curl -R -O https://luarocks.github.io/luarocks/releases/luarocks-3.3.1.tar.gz
 
tar xvfz luarocks-3.3.1.tar.gz

安装,指定安装目录为 /opt/app/kong/luarocks,同时指定使用openresty的luajit。luajit是lua的即时编译环境,简单说就是执行效率更高。

cd luarocks-3.3.1
./configure --prefix=/opt/app/kong/luarocks --rocks-tree=/opt/app/kong/openresty/luajit --sysconfdir=/opt/config/kong/luarocks --lua-suffix=jit --with-lua=/opt/app/kong/openresty/luajit --with-lua-include=/opt/app/kong/openresty/luajit/include/luajit-2.1
make
make install

配置环境变量。

cd ..
cp luarocks.env /opt/app/kong/luarocks/
echo "" >> ~/.bashrc
echo "# luarocks env" >> ~/.bashrc
echo ". /opt/app/kong/luarocks/luarocks.env" >> ~/.bashrc

环境变量文件 luarocks.env 内容和格式如下:

# add luarocks path
export PATH=/opt/app/kong/luarocks/bin:$PATH
export LUA_PATH="/opt/app/kong/luarocks/share/lua/5.1/?.lua"

测试

. ~/.bashrc
 
luarocks -h

安装kong

安装依赖包。

yum install libyaml libyaml-devel

下载

cd /opt/app/kong
wget -R -O https://github.com/Kong/kong/archive/2.0.4.tar.gz
tar xvzf 2.0.4.tar.gz

安装,解释一下,make中使用luarocks进行安装,所以无需重新指定安装目录。另外因为 lua-resty-openssl 0.6.2-1 0.4.4-1 版本问题,需要安装两遍 make install。

cd kong-2.0.4
## for lua-resty-openssl 0.6.2-1 0.4.4-1, you need install twice.
make install
make install

设置环境变量。

cd /opt/app/software/kong
cp kong.env /opt/app/kong/kong-2.0.4
echo "" >> ~/.bashrc
echo "# kong env" >> ~/.bashrc
echo ". /opt/app/kong/kong-2.0.4/kong.env" >> ~/.bashrc

环境变量文件 kong.env 内容和格式如下:

# add kong path
export PATH=/opt/app/kong/kong-2.0.4/bin:$PATH

测试

. ~/.bashrc
 
cd /opt/app/kong/kong-2.0.4
 
kong -h

将kong的路径放入到lua_path中。始终未找到合适的方式。通过lua_path环境变量设置总是未生效,而又不想修改lua的文件requires的内容。所以这个环节留着以后补充调整吧。

安装Cassandra

在kong的官网上明确,需要cassandra的3.x.x版本,所以就选择了3系列的最新版3.11.6。

下载,这里玩了一下 gpg。以后在项目中可以用下,挺规矩的。


mkdir -p /opt/app/software/cassandra
cd /opt/app/software/cassandra
wget -R -O https://mirror.bit.edu.cn/apache/cassandra/3.11.6/apache-cassandra-3.11.6-bin.tar.gz
## check file
gpg --print-md SHA256 apache-cassandra-3.11.6-bin.tar.gz
curl -L https://downloads.apache.org/cassandra/3.11.6/apache-cassandra-3.11.6-bin.tar.gz.sha256
tar xzvf apache-cassandra-3.11.6-bin.tar.gz

安装,cassandra是直接复制即可。这里创建了一个空文件夹 logs,否则程序启动时会报错,我分析是作者在本机环境中是有的,但在提交git时,由于是空文件夹,默认是不提交的,所以就忽略了。咱就手工给补上。此外还需要配置一下java的内存使用,本来是可以不配置的,cassandra会自动计算。但咱用的环境实在是资源不够用,默认的配置就内存不足了。它的计算是依据总内存,而不是当前的可用内存。所以调整一下,只使用256M。

mkdir -p /opt/app/cassandra
cp -r apache-cassandra-3.11.6 /opt/app/cassandra/
## append logs
cd /opt/app/cassandra/apache-cassandra-3.11.6
mkdir logs
## adjust jvm memory
bak conf/jvm.options
vi conf/jvm.options
### add after "#-Xmx4G"
-Xms256M
-Xmx256M

启动cassandra

启动cassandra,使用pidfile记录pid。其中 ### 的内容是文件的输出结果。

## start cassandra
cd /opt/app/cassandra/apache-cassandra-3.11.6
### bin/cassandra -p pidfile
bin/cassandra
### Node localhost/127.0.0.1 state jump to NORMAL
## open a new session
cd /opt/app/cassandra/apache-cassandra-3.11.6/logs
tail -f system.log
### Starting listening for CQL clients on localhost/127.0.0.1:9042 (unencrypted)...

操作cassandra

这点cassandra的官网不友好,只是记录了如何启动,而不写如何停止。查了一下资料,最终在bin下找到了官方推荐的操作内容。还是stack overflow靠谱啊,主要是写的干货多些。依旧 ### 是说明,在平时使用时,还是通过egrep查进程号后kill -9省事儿些。这点cassandra应该改进下,应通过默认pidfile的方式提供友好停止方式。

## check the status of Cassandra
cd /opt/app/cassandra/apache-cassandra-3.11.6
bin/nodetool status
### the status column in the output should report UN which stands for “Up/Normal”.
## connect to the database
bin/cqlsh
### exit
## stop cassandra
### `cat bin/stop-server` to see detail
cd /opt/app/cassandra/apache-cassandra-3.11.6
### kill `cat pidfile`
pgrep -u `whoami` -f cassandra | xargs kill -9

配置kong

生成kong.yml

cd /opt/app/kong/kong-2.0.4
kong config init
ll kong.yml

创建配置文件kong.conf,其中 ### 的内容为文件kong.conf需要修改的内容。这里是采用了database = cassandra。

cp kong.conf.default kong.conf
vi kong.conf
### prefix = /opt/app/kong/kong-2.0.4
### database = cassandra
### declarative_config =  /opt/app/kong/kong-2.0.4/kong.yml

[[kong migrations]] == kong migrations

migration不好翻译,没找到贴切的用词,所以用原文了。

kong migrations bootstrap -c /opt/app/kong/kong-2.0.4/kong.conf

启动kong

启动、停止、测试指令如下:

## start
cd /opt/app/kong/kong-2.0.4
kong start -c /opt/app/kong/kong-2.0.4/kong.conf
## stop
kong stop -p /opt/app/kong/kong-2.0.4
## test
curl -i http://localhost:8001/

喜欢 (0)
关于作者: