Mariadb Galera Cluster 集群镜像(下面简称MGC),仅支持Host网络模式。
MySQLl参数使用my_${参数名} 形式,比如:my_tmp_talbe_size=512M Galera参数使用wsrep_${参数名} 形式,比如:wsrep_sst_method=rsync
在192.168.1.100、192.168.1.101、192.168.1.102三个节点上分别执行如下命令即可(不要求先后,会自动组建集群):
docker run -d \
--net=host \
--name=mysql-3306 \
-e cluster_name=mysql \
-e my_port=3310 \
-e node1=192.168.1.100 \
-e node2=192.168.1.101 \
-e node3=192.168.1.102 \
-e mysql_user=demo \
-e mysql_user_password=123456 \
-v /data/mariadb-galera:/data/mariadb-galera \
veadan/mariadb-galera
执行后,可以执行 docker logs -f mysql-3306 查看启动日志,也可以执行 tail -f /data/mariadb-galera/logs/error.log 查看运行日,启动成功后,可以执行如下命令查看集群状态:
mysql -h192.168.1.100 -P3310 -udemo -p123456 -e "show status like '%wsrep%'"
yum install -y haproxy keepalived
# 备份之前的配置文件
cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.backup
vim /etc/haproxy/haproxy.cfg
#---------------------------------------------------------------------
# Example configuration for a possible web application. See the
# full configuration options online.
#
# http://haproxy.1wt.eu/download/1.4/doc/configuration.txt
#
#---------------------------------------------------------------------
#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
# to have these messages end up in /var/log/haproxy.log you will
# need to:
#
# 1) configure syslog to accept network log events. This is done
# by adding the '-r' option to the SYSLOGD_OPTIONS in
# /etc/sysconfig/syslog
#
# 2) configure local2 events to go to the /var/log/haproxy.log
# file. A line like the following can be added to
# /etc/sysconfig/syslog
#
# local2.* /var/log/haproxy.log
#
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
# turn on stats unix socket
stats socket /var/lib/haproxy/stats
# 默认的defaults模块以上不动,以下部分替换成如下内容,两台haproxy配置一致.
listen MysqlDb_proxy
bind 0.0.0.0:3316
mode tcp
option tcplog
balance leastconn #使用最少连接方式调度
server MysqlDb1 172.16.164.129:3306 check port 3306 maxconn 300
server MysqlDb2 172.16.164.130:3306 check port 3306 maxconn 300
server MysqlDb3 172.16.164.128:3306 check port 3306 maxconn 300
listen stats #监控
mode http
bind 0.0.0.0:8888 #web监控登录端口
stats enable
stats uri /dbs #we监控端登录地址http:ip:8888/dbs
stats realm haproxy\ statistics
stats auth admin:admin #web监控登端录用户和密码
vim /etc/rsyslog.conf
#在centos6.x系统中,系统日志的配置文件原来的/etc/syslog.conf已经变为/etc/rsyslog.conf
###Provides UDP syslog reception //去掉下面两行注释,开启UDP监听
$ModLoad imudp
$UDPServerRun 514
local2.* /var/log/haproxy.log #添加此行
vim /etc/sysconfig/rsyslog,添加如下内容
SYSLOGD_OPTIONS="-c 2 -r -m 0"
#注释:-c 2 使用兼容模式,默认是 -c 5,-r开启远程日志,-m 0标记时间戳。单位是分钟,为0时,表示禁用该功能
service rsyslog restart
systemctl start haproxy
编辑vim /etc/keepalived/check_haproxy.sh脚本
#!/bin/bash
A=`ps -C haproxy --no-header | wc -l`
if [ $A -eq 0 ]
then
systemctl restart haproxy
echo $(date "+%Y-%m-%d %H:%M:%S")" [info] Start haproxy" >> /dev/null
sleep 3
if [ `ps -C haproxy --no-header | wc -l` -eq 0 ]
then
systemctl stop keepalived
echo $(date "+%Y-%m-%d %H:%M:%S")" [info] Stop keepalived" >> /dev/null
fi
fi
cd /etc/keepalived
chmod +x ./check_haproxy.sh
配置keeplived
# 备份之前的配置文件
cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.backup
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
#简单的头部,这里主要可以做邮件通知报警等的设置
global_defs {
notification_email {
root@localhost
}
notification_email_from root@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_Master
}
vrrp_script chk_haproxy {
script "/etc/keepalived/check_haproxy.sh" #具体脚本路径
interval 5 #脚本循环运行间隔
weight -5
}
#VRRP虚拟路由冗余协议配置
vrrp_instance VI_1 { #VI_1 是自定义的名称;
state BACKUP #MASTER表示是一台主设备,BACKUP表示为备用设备【我们这里因为设置为开启不抢占,所以都设置为备用】
nopreempt #开启不抢占
interface ens33 #指定VIP需要绑定的物理网卡
virtual_router_id 51 #VRID虚拟路由标识,也叫做分组名称,该组内的设备需要相同
priority 100 #定义这台设备的优先级 1-254;开启了不抢占,所以此处优先级必须高于另一台
advert_int 1 #生存检测时的组播信息发送间隔,组内一致
authentication { #设置验证信息,组内一致
auth_type PASS #有PASS 和 AH 两种,常用 PASS
auth_pass 1111 #密码
}
track_script { #使用在这个域中使用预先定义的脚本,上面定义的
chk_haproxy
}
virtual_ipaddress {
172.16.164.188 #指定VIP地址,组内一致,可以设置多个IP
}
notify_master /etc/keepalived/sendmail.pl
Content type
Image
Digest
Size
176.1 MB
Last updated
almost 6 years ago
docker pull veadan/mariadb-galera