Skip to content

kunlun_cluster源码编译安装及后续更新升级

kunlundb edited this page Oct 9, 2021 · 1 revision

“由于官网上的安装包都是由ubuntu编译的,所以在使用其它的发行版(如centos)进行安装时可能会出现环境不存在/过低等问题,所以推荐先对源码进行编译再安装。 ”

  • 编译

  • 存储节点编译

编译前,UBUNTU要安装以下环境:

  1. sudo apt-get update
  2. apt-get install -y git cmake libicu-dev libaio-dev libreadline-dev zlib1g-dev flex bison libssl-dev libcrypt-dev gcc g++ pkg-config libncurses5-dev python python-pip

CENTOS环境:

  1. sudo yum install -y git cmake libarchive flex bison make gcc gcc-c++ ncurses-devel ncurses-libs libtirpc libtirpc-devel \
  2. zlib-devel openssl openssl-devel libaio libaio-devel icu libicu libicu-devel readline readline-devel
   编译RPCGEN:
  1. wget https://github.com/thkukuk/rpcsvc-proto/releases/download/v1.4/rpcsvc-proto-1.4.tar.gz
  2. tar -xzf rpcsvc-proto-1.4.tar.gz
  3. cd rpcsvc-proto-1.4
  4. ./configure
  5. make
  6. sudo make install
  1.  从git上拉取源码:(有github和gitee两种方式,推荐gitee,国内相对快些)
    

a) git clone https://gitee.com/zettadb/kunlun-storage.git

b) git clone https://github.com/zettadb/kunlun-storage.git

  1.  进入刚拉取的文件里,新建一个build文件夹且进入该文件夹
    

a) cd kunlun-storage/

b) mkdir build

c) cd build

  1.  通过wget获取boost_1_70_0并且解压
    

a) wget --no-check-certificate http://192.168.0.104:14000/thirdparty/boost_1_70_0.tar.gz (内部)

或者

      wget https://boostorg.jfrog.io/artifactory/main/release/1.70.0/source/boost_1_70_0.tar.gz (外部)

      git clone https://gitee.com/liu-liangcheng/boost_1_70_0.git (gitee)

b) tar -xzf boost_1_70_0.tar.gz

  1.  使用cmake进行编译
    

a)> cmake .. -DCMAKE_BUILD_TYPE=release -DCMAKE_INSTALL_PREFIX=/path/ -DWITH_SSL=system -DWITH_BOOST=boost_1_70_0 -DWITH_KEYRING_VAULT=0 -DWITH_ZLIB=bundled -DWITH_TOKUDB=NO -DWITH_EDITLINE=bundled -DWITH_LTO=0 -DWITH_ROUTER=0 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_NGRAM_PARSER=1 -DWITHOUT_ROCKSDB=1 -DWITH_ZSTD=bundled -DWITH_LZ4=bundled -DWITH_PROTOBUF=bundled -DWITH_LIBEVENT=bundled -DWITH_JEMALLOC=0

如:

sudo cmake .. -DCMAKE_BUILD_TYPE=debug -DCMAKE_INSTALL_PREFIX=/home/charles/build/complie/percona-8.0.18-bin-rel -DWITH_SSL=system -DWITH_BOOST=boost_1_70_0 -DWITH_KEYRING_VAULT=0 -DWITH_ZLIB=bundled -DWITH_TOKUDB=NO -DWITH_EDITLINE=bundled -DWITH_LTO=0 -DWITH_ROUTER=0 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_NGRAM_PARSER=1 -DWITHOUT_ROCKSDB=1 -DWITH_ZSTD=bundled -DWITH_LZ4=bundled -DWITH_PROTOBUF=bundled -DWITH_LIBEVENT=bundled -DWITH_JEMALLOC=0

   注意-DCMAKE_INSTALL_PREFIX这个参数,填的是要安装的路径,如果不填该参数则会安装到/usr/local/下,推荐填写,方便后续操作。

  1.  make && make install
    

a) 直接使用make,则是只有一个线程进行编译。

       如果觉得慢可以使用make -j(慎用),就是不限制编译时线程的数量,速度快到飞起,前提是该主机没有其它用户在使用或者有其它操作,这个时候再开个窗口会发现无法操作了,因为所有的资源都在进行编译。

      也可以自定义线程数量进行编译(推荐),如make -j8,同时使用8个线程并行编译。

b) Make完后就直接make install

make 完后进入到自定义安装的文件夹下,有这些(如下图)则表示编译成功

  • 计算节点编译
  1.  在git上拉取源码(两种方式,推荐gitee)
    

a) git clone https://gitee.com/zettadb/kunlun.git

b) git clone https://github.com/zettadb/kunlun.git

  1.  进入到刚拉取的源码包里
    

a) cd Kunlun

  1.  使用configure文件进行编译
    

a) ./configure --enable-release --prefix=/path-to-install

b) --enable-release则为release版本(可以不填,默认为release版本);--prefix=参数是要安装的路径

如:./configure --enable-debug --prefix=/home/charles/build/complie/postgresql-11.5-rel

  1.  make(make -jn,n根据主机的cpu来定)
    

  1.  make install
    
  • 集群管理节点编译
  1.  在git上拉取源码(两种方式,推荐gitee)
    

a) git clone https://gitee.com/zettadb/cluster_mgr.git

b) git clone https://github.com/zettadb/cluster_mgr.git

  1.  进入到源码包里面的src文件夹
    

a) cd cluster_mgr/src

  1.  使用cmake进行编译
    

a) cmake . -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/path/

如:sudo cmake . -DCMAKE_BUILD_TYPE=debug -DCMAKE_INSTALL_PREFIX=/home/charles/build/complie/cluster_mgr_rel

                 i.            -DCMAKE_INSTALL_PREFIX参数为安装路径

  1.  make
    
  2.  make install
    
  • 安装 安装kunlun_cluster有手动和一键安装两种方式,推荐使用一键安装

  • 手动安装 跳过手动安装文章的获取安装包步骤,使用刚编译好的包进行手动安装

  • 使用编译好的包进行一键安装

  1.  把刚编译好的包打包成以下文件:(如果不使用一键安装则可以跳过该步骤)
    

a) 进入存储节点安装目录的上级目录,存储节点包改名为percona-8.0.18-bin-rel并且打包

                 i.            将编译好的kunlun-storage包改名成percona-8.0.18-bin-rel

                ii.            使用tar -zcf压缩为percona-8.0.18-bin-rel.tgz

如:tar -zcf percona-8.0.18-bin-rel.tgz percona-8.0.18-bin-rel

b) 进入计算节点安装目录的上级目录,计算节点包改名为postgresql-11.5-rel并且打包

                 i.            将编译好的kunlun包改名成postgresql-11.5-rel

                ii.            使用tar -zcf压缩为postgresql-11.5-rel.tgz

如 : tar -zcf postgresql-11.5-rel.tgz postgresql-11.5-rel

c) 进入集群管理节点安装目录的上级目录,集群管理节点包改名为cluster_mgr_rel并且打包

                 i.            将编译好的集群管理节点包改名成cluster_mgr_rel

                ii.            使用tar -zcf压缩为cluster_mgr_rel.tgz

如 : tar -zcf cluster_mgr_rel.tgz cluster_mgr_rel

  1.  获取一键安装脚本:(如果不使用一键安装则可以跳过该步骤)
    

git cloud https://github.com/zettadb/cloudnative.git

a) 通过git获取脚本

b) 将刚刚打包好的三个压缩文件放到cluster目录下

c) 后续一键安装步骤参考(跳过第一步到第三步)

http://www.zettadb.com/blogs/install_kunlun_cluster

“如果在安装时出现环境的问题,把源码包里lib/deps里对应的环境cp到lib下,然后重新编译安装就行。这样只替换了局部的环境,并不会把整个系统的环境替换掉,考虑到服务器的各个应用依赖的环境不同,所以不建议替换系统的环境。

如果是第一次安装,建议先用手动安装一下,试试看有什么环境是缺少的或者过低的,然后再进行一键安装,相对来说发现环境的问题会快一些。”

  • 更新升级

  • 更新存储节点:

  1.  进入到存储节点的源码目录下
    

  1.  git pull
    

  1.  git log来查看是否已经pull到最新的版本里了
    

  1.  按照前面的编译步骤重新编译
    
  2.  进入已安装的存储节点实例的数据目录,把etc里的文件替换到新编译的存储节点目录下的etc里
    

a) 使用ps -ef | grep mysql 查看实例所在的目录basedir

b) 将实例basedir目录etc下的instances_list.txt替换到新编译的存储节点目录下的etc里

  1.  使用新编译的存储节点目录下dba_tools的stopmysql.sh和startmysql.sh脚本对实例进行重启操作
    

a) 可以vi刚替换的instances_list.txt查看实例的端口号

b) 使用stopmysql.sh 端口号 停止所有实例

c) 使用startmysql.sh 端口号 启动实例,按instances_list.txt的顺序启动实例

“由于使用的是contos,限制过多不被允许使用ulimit操作,该报错正常情况下并无大碍 ” d) Stopmysql步骤的实例也可以直接kill掉,或者自己写一个脚本一次性kill完,最好还是使用前面推荐的stopmysql.sh脚本。(startmysql同理)

使用ps -ef | grep mysql 查看实例的dasedir是否已经是为新编译的路径

  • 更新计算节点
  1.  进入到存储节点的源码目录下
    
  2.  git pull
    
  3.  按照前面的编译步骤重新编译
    
  4.  进入已安装的计算节点实例的数据目录,把etc里的文件替换到新编译的计算节点目录下的etc里
    

a) 使用ps -ef | grep mysql 查看实例所在的目录basedir

b) 将实例basedir目录etc下的instances_list.txt替换到新编译的计算节点目录下的etc里

  1.  Kill掉要更新的postgres实例,使用新编译的计算节点目录下scripts文件夹里start_pg.py启动计算节点,按照instances_list.txt的顺序逐个开启
    

ps -ef | grep postgres查看basedir是否更新成新编译的目录,是则视为更新成功

更新集群管理节点: 1.进入集群管理节点的basedir

cd /cluster_mgr_rel.basedir/

  1. 停止当前的集群管理节点

bash bin/cluster_mgr_safe --pidfile=run.pid --stop

3.和上面一样,编译一个新的集群管理节点

4.把旧的集群管理节点的clustermgr.cnf文件复制到新的集群管理节点目录下

cp /old_cluster_mgr_rel.basedir/ /new_cluster_mgr_rel.basedir/

5.启动集群管理节点

bash -x bin/cluster_mgr_safe --debug --pidfile=run.pid clustermgr.cnf >& run.log </dev/null &

                                            通过 ps -ef | grep cluster 来查看是否启动了集群管理节点

无论是计算节点还是存储节点,更新的步骤都是

  1. git pull
  2. 重新编译
  3. 把旧instances_list.txt替换到新编译包里etc下
  4. 按instances_list.txt里的顺序逐个启动节点
  5. 查看各个节点的dasedir是否更新为新编译包的路径