环境说明
1 | MASTER: data-1-1 |
配置网络参数
data-1-1
网络参数(设置主机名, 删除网卡配置文件重新生成网络配置参数,添加hosts解析,配置心跳网络路由)
hostnamectl set-hostname data-1-1
NetName=ens33
rm -f /etc/sysconfig/network-scripts/ifcfg-$NetName
nmcli con add con-name $NetName ifname $NetName autoconnect yes type ethernet ip4 10.0.0.11/24 ipv4.dns "202.103.24.68" ipv4.gateway "10.0.0.2"
NetName=ens37
rm -f /etc/sysconfig/network-scripts/ifcfg-$NetName
nmcli con add con-name $NetName ifname $NetName autoconnect yes type ethernet ip4 10.0.10.11/24
NetName=ens38
rm -f /etc/sysconfig/network-scripts/ifcfg-$NetName
nmcli con add con-name $NetName ifname $NetName autoconnect yes type ethernet ip4 10.0.11.11/24
nmcli connection reload
# Hosts (主机名解析到心跳网卡真实IP)
cat <<EOF >>/etc/hosts
10.0.10.11 data-1-1
10.0.10.12 data-1-2
EOF
# data-1-1 到达 data-1-2 心跳网络走 ens37 网卡
route add -host 10.0.10.12 dev ens37
echo '/sbin/route add -host 10.0.10.12 dev ens37' >>/etc/rc.local
chmod +x /etc/rc.local
data-1-2
网络参数(设置主机名, 删除网卡配置文件重新生成网络配置参数,添加hosts解析,配置心跳网络路由)
hostnamectl set-hostname data-1-2
NetName=ens33
rm -f /etc/sysconfig/network-scripts/ifcfg-$NetName
nmcli con add con-name $NetName ifname $NetName autoconnect yes type ethernet ip4 10.0.0.12/24 ipv4.dns "202.103.24.68" ipv4.gateway "10.0.0.2"
NetName=ens37
rm -f /etc/sysconfig/network-scripts/ifcfg-$NetName
nmcli con add con-name $NetName ifname $NetName autoconnect yes type ethernet ip4 10.0.10.12/24
NetName=ens38
rm -f /etc/sysconfig/network-scripts/ifcfg-$NetName
nmcli con add con-name $NetName ifname $NetName autoconnect yes type ethernet ip4 10.0.11.12/24
nmcli connection reload
# Hosts (主机名解析到心跳网卡真实IP)
cat <<EOF >>/etc/hosts
10.0.10.11 data-1-1
10.0.10.12 data-1-2
EOF
# data-1-2 到达 data-1-1 心跳网络走 ens37 网卡
oute add -host 10.0.10.11 dev ens37
echo '/sbin/route add -host 10.0.10.11 dev ens37' >>/etc/rc.local
chmod +x /etc/rc.local
data-1-3
网络参数
hostnamectl set-hostname data-1-3
NetName=ens33
rm -f /etc/sysconfig/network-scripts/ifcfg-$NetName
nmcli con add con-name $NetName ifname $NetName autoconnect yes type ethernet ip4 10.0.0.13/24 ipv4.dns "202.103.24.68" ipv4.gateway "10.0.0.2"
NetName=ens37
rm -f /etc/sysconfig/network-scripts/ifcfg-$NetName
nmcli con add con-name $NetName ifname $NetName autoconnect yes type ethernet ip4 10.0.10.13/24
NetName=ens38
rm -f /etc/sysconfig/network-scripts/ifcfg-$NetName
nmcli con add con-name $NetName ifname $NetName autoconnect yes type ethernet ip4 10.0.11.13/24
nmcli connection reload
添加软件依赖安装源
1 | # 配置软件依赖安装源 (cluster-glue-libs-devel 安装源) |
安装Heartbeat
# 下载软件包并安装 heartbeat
# RPM包生成方法及编译安装方法 http://home.onlycloud.xin/posts/dae5.html
heartbeat='heartbeat-3.0.6-1.el7.centos.x86_64.rpm'
heartbeat_libs='heartbeat-libs-3.0.6-1.el7.centos.x86_64.rpm'
curl -o $heartbeat http://home.onlycloud.xin/soft/heartbeat/$heartbeat --progress
curl -o $heartbeat_libs http://home.onlycloud.xin/soft/heartbeat/$heartbeat_libs --progress
yum localinstall -y heartbeat-*
配置Heartbeat
1 | # 复制配置文件模板 |
验证Heartbeat
1 | # 启动服务,验证(两个节点各自执行 ip add 能看到两个 10.0.0网段ip) |
硬盘分区
此处分区比较小,是因为在同步数据时会将整个硬盘同步,需要的时间较长且占用宿主机存储
1 | # 硬盘分区, 格式化 |
安装DRBD
1 | # YUM 安装 DRDB84 |
配置DRBD, 添加资源
1 | # DRBD 配置文件 |
初始化DRBD
1 | # 两端执行初始化(两端执行完毕后状态应该为 0: 'cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent') |
测试验证DRBD
1 | # 挂载drbd设备(请不要用物理设备挂载/dev/sdb1 否则执行文件操作重启服务后会出现故障) |
配置Heartbate管理DRBD
1 | # 两端都执行 |
手动管理
1 | # 手动执行切换 |
安装配置NFS
NFS Server端(data-1-1 data-1-2)
安装配置NFS
yum install -y nfs-utils rpcbind
启动服务, 查看服务状态(nfs服务由heartbeat管理)
systemctl restart rpcbind nfs
systemctl status rpcbind nfs
systemctl enable rpcbind
systemctl is-enabled rpcbind
rpcinfo -p localhost
配置NFS资源, 权限
chmod 777 /md1/
cat <<EOF >/etc/exports
/md1 10.0.0.*(rw,sync)
EOF
重读配置, 查看nfs资源
exportfs -r
showmount -e localhost
NFS Clietn端(web-01 web-02)
安装NFS ,启动rpcbind
yum install -y nfs-utils rpcbind
systemctl start rpcbind
systemctl enable rpcbind
查看服务资源
showmount -e 10.0.0.101
创建挂载目录授权
mkdir /md1
chown -R 777 /md1
挂载数据目录
mount -t nfs 10.0.0.101:/md1 /md1
echo -e "\n# Mount NFS\nmount -t nfs 10.0.0.101:/md1 /md1" >>/etc/rc.local
chmod +x /etc/rc.d/rc.local
配置Heartbate管理NFS
创建NFS控制脚
1 | cat <<'!' >/etc/ha.d/resource.d/killnfsd |
添加可执行权限
chmod +x /etc/ha.d/resource.d/killnfsd
配置Heartbeat资源
# 停止heartbeat服务
systemctl stop heartbeat
# 配置资源
cat <<EOF >/etc/ha.d/haresources
# 虚拟IP(提供资源访问)配置到ens33接口 对外资源流量也走ens33接口
data-1-1 IPaddr::10.0.0.101/24/ens33 drbddisk::data Filesystem::/dev/drbd0::/md1::ext4 killnfsd
data-1-2 IPaddr::10.0.0.102/24/ens33 drbddisk::data Filesystem::/dev/drbd0::/md1::ext4 killnfsd
EOF
# 启动heartbeat服务
systemctl start heartbeat
验证
# ssh登录 web-01 web-02
df -hT
ls /md1
# 关闭主节点(data-1-1)heartbeat 服务
systemctl stop heartbeat
# ssh登录 web-01 web-02
df -hT
ls /md1
# 启动(data-1-1)heartbeat 服务
systemctl start heartbeat
# ssh登录 web-01 web-02
df -hT
ls /md1
# web-01 web-02 应该能自动挂载其中切换主备时会出现几秒超时现象
服务重启后启动顺序(两端断电或重启)
# 1.两端都启动DRBD资源,查看状态(两端都为从 ro:Secondary/Secondary)
drbdadm up data
cat /proc/drbd
# 2.在主端(data-1-1)启动heartbeat服务(查看DRBD状态 ro:Primary/Secondary)
systemctl start heartbeat
sleep 3
cat /proc/drbd
ip add | grep 10.0.0
df -hT
# 3.启动备端(data-1-2)(执行完成命令后当前节点已经变为主节点)
systemctl start heartbeat
sleep 3
cat /proc/drbd
ip add | grep 10.0.0
df -hT
# 4.1 自动切换主节点为(data-1-1) 如果未能切换请重复执行或查看 heartbeat 日志 tail -f /var/log/ha-log
systemctl stop heartbeat
systemctl start heartbeat
sleep 3
cat /proc/drbd
ip add | grep 10.0.0
df -hT
# 4.2 手动切换主节点
# data-1-2(执行后变备节点 释放VIP →停止nfs → 取消drbd设备挂载 → drbd状态为备)
/etc/ha.d/resource.d/IPaddr 10.0.0.101/24/ens33 stop
/etc/ha.d/resource.d/killnfsd stop
/etc/ha.d/resource.d/Filesystem /dev/drbd0 /md1 ext4 stop
/etc/ha.d/resource.d/drbddisk data stop
# data-1-1(执行后变主节点 接管VIP → drbd状态为主 → 挂载drbd设备 → 启动nfs)
/etc/ha.d/resource.d/IPaddr 10.0.0.101/24/ens33 start
/etc/ha.d/resource.d/drbddisk data start
/etc/ha.d/resource.d/Filesystem /dev/drbd0 /md1 ext4 start
/etc/ha.d/resource.d/killnfsd start
配置inotyfy实现双主多从
待续。。。。