服务器突然崩了,业务停了半小时,客户电话快被打爆了 —— 这种情况你是不是也遇到过?双机热备就能解决这个问题,两台服务器互相盯着,一台出问题另一台马上顶上。但新手部署时总踩坑,要么配置半天切换不了,要么测试时出各种幺蛾子。今天小编就带大家走一遍全流程,从准备到测试,再到避坑技巧,保证新手也能顺顺利利搞定,一起往下看吧!
准备阶段:这些东西没弄好,后面全白搭
硬件得备齐,不用太高端但要匹配
- 两台服务器,配置不用完全一样,但 CPU、内存得能跑起来业务,比如主服务器 4 核 8G,备机 2 核 4G 也能凑活用。
- 一块共享存储(可选),要是数据量大就弄个 NAS,小的话用软件同步也行。小编之前用两块旧硬盘组了共享存储,省钱还好用。
- 交换机和网线,保证两台服务器能互相通信,最好用千兆网线,速度快些。
软件选对了,能省一半事
- 操作系统,推荐 CentOS 7 或者 Ubuntu Server,稳定还免费,新手别用太新的版本,兼容性可能有问题。
- 高可用软件用 Keepalived,开源免费,配置简单,新手容易上手;数据同步用 rsync,定时把主服务器数据拷到备机,虽然不是实时的,但够用。
部署全流程:一步一步来,别急着跳步骤
第一步:先把网络弄通畅,这是基础
- 给两台服务器设固定 IP,主服务器比如 192.168.1.10,备机 192.168.1.11,子网掩码 255.255.255.0,网关一样。
- 用 ping 命令测通不通,在主服务器上输 ping 192.168.1.11,能收到回复就成,不通的话检查网线和 IP 设置。
- 把防火墙暂时关了,新手容易被防火墙挡着,等部署完再慢慢配规则,命令是 systemctl stop firewalld。
小编第一次部署时,就因为防火墙没关,两台服务器死活不通,折腾了俩小时才发现,你说多冤。
第二步:装 Keepalived,这是双机热备的核心
- 主备机都装,命令是 yum install keepalived -y,等进度条走完,装完记得启动服务 systemctl start keepalived,再设成开机启动 systemctl enable keepalived。
- 配置主服务器,找到配置文件 /etc/keepalived/keepalived.conf,用 vi 编辑器打开,改这几处:
state MASTER(主服务器标识)
interface eth0(改成自己的网卡名,用 ifconfig 看)
virtual_ipaddress {192.168.1.200}(虚拟 IP,用户访问用这个)
priority 100(优先级,主服务器设高点) - 备机配置差不多,就 state 改成 BACKUP,priority 改成 80,虚拟 IP 得和主服务器一样,不然切换不过去。
改配置文件时,注意括号和逗号,少个符号都可能出错,小编就犯过这错,盯着文件看了半小时才发现少个}。
第三步:数据同步得弄好,不然切换后数据对不上
- 用 rsync 工具,主备机都装上 yum install rsync -y。
- 主服务器上写个脚本,把要同步的目录(比如 /var/www)同步到备机,脚本内容大概是 rsync -avz /var/www/root@192.168.1.11:/var/www/,保存成 sync.sh,再设个定时任务,每 5 分钟跑一次,命令是 crontab -e,加一行 */5 * * * * /root/sync.sh。
要是数据量大,同步时间会长点,新手别着急,等它跑完再测试。
故障切换测试:不测试等于白部署
测试方法很简单,模拟主服务器出问题
- 先查虚拟 IP 在哪,主服务器上输 ip addr,看 192.168.1.200 是不是在主服务器上,在的话就对了。
- 把主服务器关机,或者停掉 Keepalived 服务 systemctl stop keepalived,过个十几秒,去备机上输 ip addr,虚拟 IP 应该跑到备机上了,这说明切换成功。
- 再把主服务器打开,看虚拟 IP 会不会切回来,正常情况下会的,因为主服务器优先级高。
小编第一次测试时,心里特紧张,怕切换失败,结果一次就成了,你看其实没那么难。
测试时可能遇到的问题及解决办法
问题现象 | 可能原因 | 解决办法 |
---|---|---|
虚拟 IP 不切换 | 主备机通信不通 | 检查防火墙,重启 Keepalived |
切换后业务跑不起来 | 备机软件没装好 | 对比主备机软件版本,保证一致 |
数据同步失败 | 权限不够 | 给目录授权 chmod -R 755 /var/www |
避坑技巧:新手容易踩的坑,我都替你试过了
- 虚拟 IP 别和现有 IP 冲突:部署前先 ping 一下虚拟 IP(192.168.1.200),没人用再设,不然会冲突。
- 主备机时间得同步:时间差太多可能导致脚本执行出错,用 ntpdate 同步一下,命令是 ntpdate cn.pool.ntp.org。
- 别忽略日志文件:出问题先看日志,Keepalived 日志在 /var/log/messages,里面会告诉你哪错了。
小编之前遇到切换失败,就是看日志发现虚拟 IP 冲突,改了个 IP 就好了,日志真是个好东西。
自问自答:新手可能会问的几个问题
- 问:一定要用共享存储吗?
答:不一定,小业务用 rsync 同步就行,省钱;大业务或者数据实时性要求高,就弄个共享存储,几百块的 NAS 就行。 - 问:服务器品牌不一样能做热备吗?
答:能,只要操作系统一样,配置差不多,不管是戴尔还是惠普,都能搭,小编试过不同品牌的服务器,没问题。
小编的一点心得
部署双机热备,关键在细心,每一步都别跳,配置文件多检查几遍,测试一定要做。其实这东西没那么神秘,新手多练两次就熟了。小编第一次部署花了一下午,现在半小时就能搞定。记住,双机热备不是摆设,定期测试才能保证真出事时管用,别等服务器宕机了才想起没测试,那时候就晚了。希望这些能帮到你,赶紧动手试试吧!
最新业务:世纪货币网