高可用数据库负载均衡

一、数据库galera集群

使用OpenStack私有云平台,创建3台系统为centos7.9的云主机命名为node-1、node-2、node-3,对三台云主机进行安装高可用数据库集群(MariaDB_Galera_cluster,数据库密码设置为123456)的操作(使用mariadb-repo.tar.gz作为yum源安装数据库服务)。完成后提交node-1节点的用户名、密码和IP地址到答题框。

1.配置YUM源并安装软件包

# 1.配置主机映射
[root@node-1 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
​
10.24.20.149 node-1
10.24.20.162 node-2
10.24.20.109 node-3
# 拷贝映射
[root@node-1 ~]# scp /etc/hosts  node-3:/etc/
​
​
# 2.下载软件包并配置YUM源 安装数据库及相关软件包 (所有节点执行)
[root@node-1 ~]# curl -O http://172.128.10.250/mariadb-repo.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  106M  100  106M    0     0   433M      0 --:--:-- --:--:-- --:--:--  436M
# 2.1删除联网YUM源
[root@node-1 ~]# rm -f /etc/yum.repos.d/*
# 2.2解压软件包
[root@node-1 ~]# tar xf mariadb-repo.tar.gz 
[root@node-1 ~]# vi /etc/yum.repos.d/http.repo
[root@node-1 ~]# cat /etc/yum.repos.d/http.repo 
[centos]
baseurl=http://172.128.10.250/centos7.9/
gpgcheck=0
[db]
baseurl=file:///root/mariadb-repo
gpgcheck=0
​
# 2.3检查配置是否正确
[root@node-1 ~]# yum repolist
​
# 2.4安装所有软件包 
[root@node-1 ~]# yum install -y mariadb-server galera rsync 

2.初始化数据库

注意:galera集群是多主集群,如果需要重启galera集群需要保留一台最后重启,否则所有同时重启将会导致集群挂掉

# 1.启动数据库(所有节点执行)
[root@node-1 ~]# systemctl start mariadb 
[root@node-1 ~]# systemctl enable mariadb 
Created symlink from /etc/systemd/system/mysql.service to /usr/lib/systemd/system/mariadb.service.
Created symlink from /etc/systemd/system/mysqld.service to /usr/lib/systemd/system/mariadb.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.

3.配置高可用集群

# 1.node-1执行
[root@node-1 ~]# vi /etc/my.cnf.d/server.cnf 
# 2.修改配置如下
[galera]
wsrep_on=ON
wsrep_provider="/usr/lib64/galera/libgalera_smm.so"
wsrep_cluster_address="gcomm://node-1,node-2,node-3"
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
wsrep_slave_threads=1
innodb_flush_log_at_trx_commit=0
# 3.拷贝配置文件到各个节点
[root@node-1 ~]# scp /etc/my.cnf.d/server.cnf node-2:/etc/my.cnf.d/
[root@node-1 ~]# scp /etc/my.cnf.d/server.cnf node-3:/etc/my.cnf.d/
4.启动高可用集群
# 1.所有节点关闭selinux (非常重要,如果不关闭无法启动galera集群)
[root@node-1 ~]# setenforce 0
# 2.node-1节点启动galera集群
[root@node-1 ~]# systemctl stop mariadb
[root@node-1 ~]# galera_new_cluster
# 2.1检查是否启动集群
[root@node-1 ~]# netstat -ntpl | grep mysql 
tcp        0      0 0.0.0.0:4567            0.0.0.0:*               LISTEN      8317/mysqld         
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      8317/mysqld 
# 3.其余节点重启数据库服务即可加入集群
[root@node-2 ~]# systemctl restart mariadb
[root@node-3 ~]# systemctl restart mariadb 
4.1挂掉的高可用集群恢复(可选)
# 1.删除掉galera已经初始化完成的记录文件 (初始化节点执行)
[root@node-1 mysql]# rm -f /var/lib/mysql/grastate.dat
# 2.重新初始化
[root@node-1 mysql]# galera_new_cluster 

5.设置所有节点root密码

# 1.在node-1节点设置整个集群的密码
[root@node-1 ~]# mysqladmin -uroot password  '123456' 
# 2.使用命令检查集群
# 查询集群节点数量 3为正常
[root@node-1 ~]# mysql -uroot -p123456 -e " show status like '%wsrep%' "  | grep cluster
wsrep_cluster_size      3
# 查询集群是否启动
[root@node-1 ~]# mysql -uroot -p123456 -e " show variables like '%wsrep%' "  | grep -i on
wsrep_on        ON
# 至此galera集群已经搭建完毕

二、高可用数据库负载均衡

使用赛项提供的OpenStack私有云平台,申请三台CentOS7.9系统的云主机,分别命令为node1、node2、node3,(使用提供的软件包mariadb-repo.tar.gz),在这三个节点上安装数据库服务,数据库密码设置为123456。将这三个节点配置为数据库高可用集群即MariaDB_Galera_Cluster。配置完高可用服务后,安装haproxy负载均衡服务。配置node1节点为负载均衡的窗口,配置负载均衡为轮询算法;HA服务监听的端口为node1节点的3307端口;配置访问三个节点的权重依次为1,2,4。配置完成后提交node1节点的用户名、密码和IP地址到答题框。

1.安装软件包

# 由于上一题已经将galera搭建完成,本次只需要直接安装即可
[root@node-1 ~]# yum install -y haproxy 
[root@node-2 ~]# yum install -y haproxy
[root@node-3 ~]# yum install -y haproxy

2.修改配置

# node-1节点
[root@node-1 ~]# cat /etc/haproxy/haproxy.cfg
# 1.修改内容如下:
defaults
        maxconn 4000 # 与global中的maxconn对应
    
# 2.添加如下配置:
listen mysql
    balance     roundrobin  # 采用轮训算法
    bind        0.0.0.0:3307 # 绑定3307
    mode    tcp
    option  tcplog
    option  tcpka
    server  node-1 10.24.20.149:3306 check weight 1  # 设置后端服务 设置比重 1:2:4
    server  node-2 10.24.20.162:3306 check weight 2
    server  node-3 10.24.20.109:3306 check weight 4

3.启动服务

# 1.启动服务
[root@node-1 ~]# systemctl start haproxy 
# 2.数据库授权
[root@node-1 mysql]# mysql -uroot -p123456 -e "grant all on *.* to root@'%' identified by '123456';flush privileges;"
# 3.检查一下是否成功 (能够登陆进数据库即为成功)
[root@node-1 mysql]# mysql -uroot -p123456 -P 3307  -h 10.24.20.149
3.1高级检查
# 1.给各个节点配置server_id方便我们能够查询到具体访问了哪个机器
# 1.1所有节点执行
[root@node-1 mysql]# vi /etc/my.cnf
[mysqld]
server_id = 1 # 唯一的server_id 各个节点不同
​
# 2.各个节点依次重启 (不可同时重启)
[root@node-1 ~]# systemctl restart mariadb
[root@node-2 ~]# systemctl restart mariadb
[root@node-3 ~]# systemctl restart mariadb
​
# 3.检查负载均衡策略
[root@node-1 mysql]# mysql -uroot -p123456 -P 3307  -h 10.24.20.149 -e " show variables like '%server_id%'  ;"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id     | 3     |
+---------------+-------+
[root@node-1 mysql]# mysql -uroot -p123456 -P 3307  -h 10.24.20.149 -e " show variables like '%server_id%'  ;"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id     | 2     |
+---------------+-------+
[root@node-1 mysql]# mysql -uroot -p123456 -P 3307  -h 10.24.20.149 -e " show variables like '%server_id%'  ;"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id     | 3     |
+---------------+-------+
[root@node-1 mysql]# mysql -uroot -p123456 -P 3307  -h 10.24.20.149 -e " show variables like '%server_id%'  ;"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id     | 1     |
+---------------+-------+

##

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值