阅读 203

Jumpserver高可用集群部署:(三)MariaDB Galera 集群部署

Jumpserver高可用集群部署:(三)MariaDB Galera 集群部署

MariaDB 数据库保存了Jumpserver的用户、资产、运维授权等重要配置信息,其高可靠性直接关系集群的可用性。Jumpserver官方文档要求Mariadb Server ≥ 5.5.56,由于MariaDB Galera 集群5.5.x版本Galera Server配套存在问题,实际测试10.2.x以上版本与Jumpserver存在兼容问题,故选择部署MariaDB Galera 集群10.1.x版本。

1、配置防火墙

3306:MariaDB/MySQL的服务端口
4567:Galera做数据复制的通讯和数据传输端口,需要在防火墙放开TCP和UDP 
4568:Galera做增量数据传输使用的端口(Incremental State Transfer, IST),需要防火墙放开TCP 
4444:Galera做快照状态传输使用的端口(State Snapshot Transfer, SST),需要防火墙放开TCP

firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.255.200.1/30" port protocol="tcp" port="3306" accept"firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.255.200.1/30" port protocol="tcp" port="4567" accept"firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.255.200.1/30" port protocol="udp" port="4567" accept"firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.255.200.1/30" port protocol="tcp" port="4568" accept"firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.255.200.1/30" port protocol="tcp" port="4444" accept"firewall-cmd --reload

2、安装 Mariadb

# 配置Yum源vi /etc/yum.repos.d/MariaDB.repo

[mariadb]
name = MariaDB
baseurl = http://mirrors.ustc.edu.cn/mariadb/yum/10.1/centos7-amd64
gpgkey=http://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1 

# 更新Yum源缓存yum makecache fast# 安装mariadbyum install MariaDB-server MariaDB-client MariaDB-devel -y

3、修改数据存放目录至SSD磁盘

# 创建数据目录mkdir /ssd/mariadb# 修改数据目录相关配置,datadir配置项的值设为ssd磁盘对应的目录vi /etc/my.cnf.d/server.cnf# this is only for the mysqld standalone daemon[mysqld]
datadir=/ssd/mariadb# 在新的数据目录重装安装初始化数据库mysql_install_db# 修复相关目录权限chown -R mysql:mysql /ssd/mariadb

4、对数据服务安全初始化配置

# 启动服务systemctl start mariadb# 安全初始化,设置 root 密码,其他选项全部 Yesmysql_secure_installation# 停止服务systemctl stop mariadb
5、配置启动mariadb集群
# 修改mariadb配置,启用galera相关必填的配置项vi /etc/my.cnf.d/server.cnf

[galera]# Mandatory settingswsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address=gcomm://10.255.200.1,10.255.200.2,10.255.200.3
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2# 以下为选配选项,可根据需要配置 ,IP地址应修改为集群中各节点的实际IP地址# 由于生产环境业务网和存储网使用2个不同的网络,服务器重启后因网卡顺序变化,会出现集群同步报错,所以通过wsrep_node_address配置指定网卡IP地址,避免使用存储网访问前面配置的业务网集群IP不通出错。bind-address=10.255.200.1
wsrep_node_address=10.255.200.1# 启动集群第一个节点galera_new_cluster
systemctl status mariadb
systemctl enable mariadb# 启动集群其它2个节点systemctl start mariadb
systemctl status mariadb
systemctl enable mariadb

6、检查集群状态

# 使用mysql客户端连接数据库mysql -uroot -p# 显示集群里有3个节点show status like 'wsrep_cluster_size';# 显示连接状态ONshow status like 'wsrep_connected';# 显示集群中3个节点IPshow status like 'wsrep_incoming_addresses'; 

# 显示节点的同步状态show status like 'wsrep_local_state_comment'; 

# 显示集群同步相关所有信息show global status like  'wsrep_%';

7、创建Jumpserver数据库及配置授权

mysql -uroot -p# 创建jumpserver数据库create database jumpserver default charset 'utf8' collate 'utf8_bin';# xxxxxxxx 表示数据库密码,授权相应的IP地址及hostname访问数据库grant all on jumpserver.* to 'jumpserver'@'10.255.200.%' identified by 'xxxxxxxx';grant all on jumpserver.* to 'jumpserver'@'localhost' identified by 'xxxxxxxx';grant all on jumpserver.* to 'jumpserver'@'devops01' identified by 'xxxxxxxx';grant all on jumpserver.* to 'jumpserver'@'devops02' identified by 'xxxxxxxx';grant all on jumpserver.* to 'jumpserver'@'devops03' identified by 'xxxxxxxx';# 保存权限flush privileges;

8、集群关机冷启动或者意外中断后的集群恢复

mariadb galera 集群中只要有一个节点正常运行,其它节点可正常重启。但如果集群关机冷动或者意外中断后的集群恢复时,第一个启用的节点需手动运行galera_new_cluster命令启动。

第一个启动的节点应为最后存活的主节点,方可保证数据为最新数据,不丢失数据,否则会有错误提示:
[ERROR] WSREP: It may not be safe to bootstrap the cluster from this node. It was not the last one to leave the cluster and may not contain all the updates. To force cluster bootstrap with this node, edit the grastate.dat file manually and set safe_to_bootstrap to 1 .

# 通过查看状态同步日志,找出最后存活节点(也是数据最新节点)# 对比global state后的数字,数字最大的为最新节点,eg:7098cat /var/log/message | grep "New cluster view"Oct 16 20:12:37 devops01 mysqld[4105]: 2020-10-16 20:12:37 139817132648192 [Note] WSREP: New cluster view: global state: 3c299e2c-0a33-11eb-b468-f6044560426e:7098, view# 3: Primary, number of nodes: 3, my index: 1, protocol version 3# 在最后存活节点上修改galera状态记录文件,将safe_to_bootstrap设置为1vi  /ssd/mariadb/grastate.dat

safe_to_bootstrap: 1# 在最后存活节点上启动集群第一个节点mariadb服务galera_new_cluster# 在另外2个节点上启动mariadb服务systemctl start mariadb

©著作权归作者所有:来自51CTO博客作者dusthunter的原创作品,如需转载,请注明出处,否则将追究法律责任


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐