暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

LightDB 高可用安装

原创 小小亮 2021-09-06
550

1. 环境准备

1 . 每台机器均已创建好lightdb用户
2 . 每台机器软硬件规格一样(推荐万兆网络),系统配置一样
3 . 每台机器设置相互之间的lightdb用户的免密认证

# 例如:主备集群环境
# 主节点 :192.168.10.110 # 备节点 :192.168.10.128
# 切换到lightdb用户下
su - lightdb
# 免密认证,每台机器执行
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa # 证书同步到其他机器
ssh-copy-id $user@$ip
例如:
ssh-copy-id lightdb@192.168.10.110 本机
ssh-copy-id lightdb@192.168.10.128 备机

# 免密认证验证,无需输密码
[lightdb@localhost install]$ ssh lightdb@192.168.10.128 Last login: Thu Aug 12 09:02:32 2021
  1. 每台机器需要安装 expect
yum install expect -y

2. 高可用版安装过程

  1. lightdb用户选择高可用版安装包,放到要部署的其中一台机器
    (注意:这台机器在高可用集群中默认主节点)
1)高可用版安装包:LightDB-X13.3-21.1-el7.x86_64-HA.bin

2)上传LightDB安装包到服务器
选择 LightDB-X13.3-21.1-el7.x86_64-HA.bin 高可用版安装包,上传到需要安装服务器,将安装包放在lightdb用户目录下。

2.安装包安装

# 安装包执行权限
chmod u+x LightDB-X13.3-21.1-el7.x86_64-HA.bin # 格式:安装包名 install
例如:
LightDB-X13.3-21.1-el7.x86_64-HA.bin install

local_path=/tmp/.LIGHTDBINSTALL.lightdb
tool_path=/tmp/.LIGHTDBINSTALL.lightdb/lightdb/tools

# 是否安装lightdb,选择Y,高可用版默认安装在/home/lightdb/lightdb13.3-21.1目录
Do you want to install LightDB?[Y/N]:Y
The high available lightdb install directory/home/lightdb/lightdb13.3-21.1 lightdb install path is: /home/lightdb/lightdb13.3-21.1
lightdb bin directory is: /home/lightdb/lightdb13.3-21.1/lightdb-x/bin lightdb install tools path is: /tmp/.LIGHTDBINSTALL.lightdb/lightdb/tools configuring environment variable of lightdb ... config path done configuring lib environment variable of lightdb ... config libpath done
LightDB install finish,welcome to use LightDB

本机安装后,安装目录及结构如下:

# 查看安装路径
[lightdb@localhost lightdb13.3-21.1]$ pwd
/home/lightdb/lightdb13.3-21.1

# 查看安装目录结构
[lightdb@localhost lightdb13.3-21.1]$ ls install lightdb-x pgpool

# 目录结构说明
install 目录:高可用脚本目录
lightdb-x:lightdb目录
pgpool:pgpool目录

3. 一键部署高可用集群

  1. lightdb用户选择一台机器下载高可用版安装包,在当前机器home目录下创建改.highavailable-hosts ,配置高可用列表。
    (注意:默认搭建的主备高可用集群是主库同步备库异步,如需改动,需要用户根据实际需要,配置异步转同步,流程见4)
touch ~/.highavailable-hosts # 内容如下:
# 注意:第一行是当前机器,本机是primary节点,其他为standby节点
# 格式如下:
# ip 用户 密码 是否当前是安装脚本的主机(1:是,0:否:此参数后续优化会去掉)
192.168.10.128 lightdb 123456 1 ens33
192.168.10.110 lightdb 123456 0 ens33
  1. 本机安装结束后,进入安装目录的install目录下,执行lightdb-highavailable-build.sh一键部署集群
# 进入高可用脚本目录
cd ~/lightdb13.3-21.1/install/

# 执行一键安装高可用脚本


# ./lightdb-highavailable-build.sh 安装包 home目录 日志 版本,例如:
./lightdb-highavailable-build.sh ~/LightDB-X13.3-21.1-el7.x86_64-HA.bin /home/lightdb/ install.log lightdb13.3- 21.1

# 是否搭建高可用环境 选择Y继续,N退出
Do you want to build high available cluster?[Y/N]:
# 接下来进行后续的同步,安装,搭建集群,部分日志过程如下:
# 同步. highavailablehosts文件到其他机器
step 1:synchronize highavailablehosts to other highavailable host # 动态生成.pgpass文件,并同步到其他机器
step 2:Dynamically generated /home/lightdb/.pgpass,synchronize .pgpass to other highavailable host # 同步安装包到其他机器
step 3:synchronize installpackage to other highavailable host # 安装安装包到其他机器
step 4:install package to other highavailable host # 根据. highavailablehosts文件搭建高可用集群
step 5:build highavailable cluster on all highavailable host

3.通过repmgr查看集群集群状态

图片.png

  1. 默认搭建集群目录结构
# 以上述环境为例 
# 主节点信息: ip 192.168.10.110机器 
实例目录地址: /home/lightdb/data/defaultcluster 
实例postgres.conf目录: /home/lightdb/data/defaultcluster/postgres.conf 

repmgr相关配置文件目录 进程文件:/home/lightdb/data/repmgrd.pid 
config文件:/home/lightdb/data/repmgr.
conf log文件:/home/lightdb/data/repmgr.log 

# 备节点信息 ip 192.168.10.128机器 
实例目录地址: /home/lightdb/data/defaultcluster 
实例postgres.conf目录: /home/lightdb/data/defaultcluster/postgres.
conf repmgr相关配置文件目录 
进程文件:/home/lightdb/data/repmgrd.pid 
config文件:/home/lightdb/data/repmgr.
conf log文件:/home/lightdb/data/repmgr.log 

# 主备实例端口,数据库名称密码 
postgres库 ,用户名:lightdb, 密码:lightdb 
repmgr库, 用户名:repmgr ,密码:repmgr

4. 集群异步与同步模式转换

集群默认模式为同步模式,如果需要改为异步模式,需修改主备实例目录下postgresql.conf配置文件里的 synchronous_commit及后重启或
reload即可。

# 同步模式修改为
synchronous_commit = 'on' 
synchronous_standby_names = '*' 
# 异步模式修改为
synchronous_commit = 'local' 
#synchronous_standby_names = ''

5. LightDB集群管理命令


# 常用管理命令(需要指定每个节点repmgr.conf配置文件)
repmgr primary register 安装lightdb的repmgr扩展并注册为主节点
repmgr primary unregister 注销不活动的主节点
repmgr standby clone 从其他节点复制数据到从节点
repmgr standby register 注册从节点(添加从的信息到repmgr元数据)
repmgr standby unregister repmgr 元数据中移除从的信息
repmgr standby promote 将从提升为主
repmgr standby follow 将从跟随新主
repmgr standby switchover 将从提升为主并将主降级为从
repmgr witness register 注册一个观察节点repmgr witness unregister 移除一个观察节点repmgr node status 显示节点的基本信息和复制状态repmgr node check 从复制的角度对节点进行健康监测repmgr node rejoin	重新加入一个失效节点到集群repmgr cluster show 显示所有集群中注册的节点信息repmgr cluster matrix 在所有节点运行show并汇总
repmgr cluster crosscheck 在节点间两两交叉监测连接
repmgr cluster event 输出时间记录repmgr cluster cleanup	清理监控历史repmgr service status 节点状态

# 以上述环境为例
(1)主节点机器查看集群状态(192.168.10.110机器)
repmgr service status -f /home/lightdb/data/repmgr.conf (2)备节点机器查看集群状态(192.168.10.128机器)
repmgr service status -f /home/lightdb/data/repmgr.conf


(3)备节点关闭之后,重新加入集群(192.168.10.128机器) 格式如下:
repmgr node rejoin -f 当前节点repmgr文件 -h 主节点ip -p 主节点端口 -Urepmgr -d repmgr --force-rewind

例如:
repmgr node rejoin -f /home/lightdb/data/repmgr.conf -h 192.168.10.110 -p5432 -Urepmgr -d repmgr --force-rewind


(4)备节点、主节点、repmgr均关闭(主备未切换),重启各节点及repmgrd守护进程# 启动主节点(192.168.10.110机器)
lt_ctl -D /home/lightdb/data/defaultcluster -o "-p 5432" start # 注册主节点信息(192.168.10.110机器)
repmgr primary register -f /home/lightdb/data/repmgr.conf # 启动主节点repmgrd守护进程(192.168.10.110机器)
repmgrd -d -f /home/lightdb/data/repmgr.conf -p ~/data/repmgrd.pid # 备节点加入集群(192.168.10.128机器)
repmgr node rejoin -f /home/lightdb/data/repmgr.conf -h 192.168.10.110 -p5432 -Urepmgr -d repmgr --force-rewind (5)备节点、主节点、repmgr均关闭(主备关闭时做了切换),重启各节点及repmgrd守护进程

# 启动切换后的主节点(192.168.10.128机器)
lt_ctl -D /home/lightdb/data/defaultcluster -o "-p 5432" start # 注册切换后的主节点信息(192.168.10.128机器)
repmgr primary register -f /home/lightdb/data/repmgr.conf # 启动切换后的主节点repmgrd守护进程(192.168.10.110机器)
repmgrd -d -f /home/lightdb/data/repmgr.conf -p ~/data/repmgr.pid # 切换后的备节点加入集群(192.168.10.110机器)
repmgr node rejoin -f /home/lightdb/data/repmg.conf -h 192.168.10.128 -p5432 -Urepmgr -d repmgr --force-rewind

(6)重新克隆新的节点,并加入集群
# 格式repmgr -h 主节点ip -p 主节点端口 -U repmgr -d repmgr -f 新的备节点#repmgr.conf文件 standby clone

例如:
192.168.10.123机器创建新备节点
repmgr -h 192.168.10.110 -p 5432 -U repmgr -d repmgr -f /home/lightdb/data/repmgr.conf standby clone


# 创建启动新的备节点,注册,并启动repmgrd守护进程
lt_ctl -D /home/lightdb/data/defaultcluster -o "-p 5432" start # 注册新的备节点
repmgr standby register -f /home/lightdb/data/repmgr.conf # 启动新的备节点repmgrd守护进程
repmgrd -d -f /home/lightdb/data/repmgr.conf -p ~/data/repmgr.pid

6. LightDB Failover操作

手动切换主备库(确保手动切换时,主节点低负载)

# 关闭主库(192.168.10.110机器)
lt_ctl -D /home/lightdb/data/defaultcluster -o "-p 5432" stop # 备节点升为主(192.168.10.128机器)
repmgr standby promote -f /home/lightdb/data/repmgr.conf # 原备节点查看主备状态,确认原备节点提升为主库
repmgr service status -f /home/lightdb/data/repmgr.conf # 将关掉的主库重新加入到集群
repmgr node rejoin -f /home/lightdb/data/repmgr.conf -h 192.168.10.128 -p5432 -Urepmgr -d repmgr --force-rewind

7. LightDB Failover操作

选择备节点自动切换主备

repmgr standby switchover -f /home/lightdb/data/repmgr.conf

8.部署keepalived VIP高可用(需要root用户执行)

1.安装keepalived

yum install keepalived

2.配置 keepavlied

# 执行configure_keepalived脚本
例如:
/home/lightdb/lightdb13.3-21.1/install/keepalived/configure_keepalived.sh eth0 192.168.56.200/24 password

# 第一个参数:网卡接口名称
# 第二个参数:虚拟ip/子网掩码长度
# 第三个参数:keepalived密码
# 注意:
1.主备虚拟ip和keepalived密码必须一致
2.使用root运行
  1. 启动 keepalived
systemctl start keepalived 
注意: 
每次重启服务器,请运行iptables -F 
  1. 主库宕机恢复(主节点启动起来)
repmgr node rejoin -f/home/lightdb/data/repmgr-standby.conf -h 192.168.56.102 -p5432 -Urepmgr -d repmgr --force- rewind

5.查看虚拟ip

# 主节点执行ip命令可以看到虚拟ip,示例如下:
[lightdb@localhost ~]$ ip a show eth0
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 08:00:27:35:75:ab brd ff:ff:ff:ff:ff:ff
inet 192.168.56.102/24 brd 192.168.56.255 scope global noprefixroute dynamic eth0 valid_lft 365sec preferred_lft 365sec
inet 192.168.56.200/24 scope global secondary eth0 valid_lft forever preferred_lft forever
inet6 fe80::5b3:e1b:fe55:a7cc/64 scope link noprefixroute valid_lft forever preferred_lft forever

本文节选自《LightDB数据库安装手册》

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论