实验环境:
两台mariaDB服务器 172.16.10.20 172.16.10.21
fip:172.16.10.28
MariaDB文件存储共享:172.16.10.22
实验准备:
1、两个节点的主机名称和对应的IP地址解析服务可以正常工作,且每个节点的主机名称需要跟"uname -n“命令的结果保持一致
1
2
3
4
5
6
7
8
9
| vim /etc/hosts
172.16.10.20 21.xuphoto.com 20xu
172.16.10.21 22.xuphoto.com 21xu
Node1:
# sed -i 's@\(HOSTNAME=\).*@\121.xuphoto.com@g'
# hostname 21.xuphoto.com
Node2:
# sed -i 's@\(HOSTNAME=\).*@\122.xuphoto.com@g'
# hostname 22.xuphoto.com
|
2、各节点时间保持一致可添加统一NTP服务器同步任务:
1
2
| crontab -e
*/3 * * * * /usr/sbin/ntpdate 172.16.0.1 &>/dev/null
|
3、 各节点间可基于密钥验证SSH而无需密码
配置安装 corosync/pacemaker
1
| yum install corosync pacemaker -y
|
1
2
3
4
|
[iyunv@21~]# rpm -ql corosync #查看 corosync文件位置
/etc/corosync
/etc/corosync/corosync.conf.example
|
1、 配置corosync配置文件,组播地址,密钥验证等等
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| vim /etc/corosync/corosync.conf
compatibility:whitetank #是否兼容whitetank版本 保持默认即可
totem定义底层通信层: 组播地址,线程,安全认证等等;
secauth:on #安全认证
threads:0 #线程数 0表示不基于线程模式,基于进程模式工作;
interface:
ringnumber:0 # 保持0 类似于TTL值
bindnetaddr:172.16.0.0 #监听的网络地址
mcasaddr:239.255.X.X #多播地址
mcastport:5405 #多播端口
TTL:1 #TTL值默认
logging:
to_logfile: yes
timestamp: on #是否记录时间戳,开启会影响性能,依系统性能而定
logger_subsys {
subsys: AMF
debug: off
}
}
|
配置pacemake以插件形式运行在corosync.conf中插入以下代码 1
2
3
4
5
6
7
8
9
| service {
ver: 0
name: pacemaker
# use_mgmtd: yes
}
aisexec {
user: root
group: root
}
|
使用corosync-keygen生成验证密钥 2、 使用corosync-kegen
直接运行命令即可,但是他需要从随机数熵池中读取1024个随机数 /dev/random 如果不够可以做I/O操作 3、拷贝 authkey corosync.conf 文件到另外一个节点上 1
| scp -p authkey corosync.conf 20xu:/etc/corosync
|
4、 启动服务 1
| # service corosync start;ssh 20xu 'service corosync start'
|
5404端口处于监听状态;
1
| #tail -f /var/log/cluster/corosync.log #监控 日志系统看看有没有异常状态;
|
安装crmsh (在DC上安装即可,也可每都安装) 先下载crmsh pssh 然后用yum 安装 解决依赖关系并不检查gpg信息, 1
| #yum --nogpgcheck localinstall crmsh-2.1-1.6.x86_64.rpm pssh-2.3.1-2.el6.x86_64.rpm
|
安装完成: 使用crm 进入子命令模式; 配置全局属性 crm(live)configure#property stonith-enabled=false #如果没有stonith 设备需要禁止 crm(live)configure#property no-quorum-policy=ignore crm(live)configure#verify #检查语法: commit: #保存
定义 fip:172.16.10.28
1
| crm(live)configure#primitive mysqlip ocf:heartbeat:IPaddr params ip=172.16.10.28 nic=eth0cidr_netmask=16 op monitor interval=10s timeout=20s
|
定义 mysqlnfs
1
| crm(live)configure#primitive mysqlnfs ocf:heartbeat:Filesystem paramsdevice="172.16.10.22:/mysql" directory="/mysql"fstype="nfs" op monitor timeout=40 interval=20 op start timeout=60 opstop timeout=60
|
定义mysql:
1
| crm(live)configure#primitive mysqld lsb:mysqld op monitor timeout=40 interval=2
|
定义组:
1
| crm(live)configure#group mysqlgroup mysqlip mysqlnfs mysqld
|
定义排序:
1
2
| crm(live)configure#order mysqlip_before_mysqlnfs Mandatory: mysqlip mysqlnfs
crm(live)configure#order mysqlnfs_before_mysqld Mandatory: mysqlnfs mysqld
|
切换节点后数据正常。
|