注:下文涉及到配置的,如无特别说明,主备机则一致!
一、环境介绍
1、这是我CentOS的版本,CentOS7.1,主备都为该版本
[root@localhost ~]# cat /etc/RedHat-release
CentOS Linux release 7.1.1503 (Core)
[root@localhost ~]# cat /proc/version
Linux version 3.10.0-229.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.2 20140120 (Red Hat 4.8.2-16) (GCC) ) #1 SMP Fri Mar 6 11:36:42 UTC 2015
2、修改主机名并修改host
[root@localhost ~]# hostnamectl set-hostname node-01
[root@localhost ~]# vi /etc/hosts
127.0.0.1node-01在127后面添加node-01
二、拓扑图的规划:
A)
|------------IP地址-----------|----------|------软件------|----------|-状态-|
|172.21.4.51(VIP:172.21.4.44 )|----------|keepalived+nginx|----------|Master|
|172.21.4.52(VIP:172.21.4.44 )|----------|keepalived+nginx|----------|Backup|
|---------172.21.4.91---------|----------|------IIS-------|----------|-Web1-|
|---------172.21.4.91---------|----------|------IIS-------|----------|-Web2-|
B)
Internet--
|
=============
| ISP Router|
=============
| |
| |---- Web1 (172.21.4.91)
|-HA-|eth0--> 172.21.4.51 |
| \ /
| \ /
| ===VIP(172.21.4.44)===
| / \
| / \
|-HA-|eth0--> 172.21.4.52 |
|---- Web2 (172.21.4.92)
|
注:在网关上已针对VIP(172.21.4.44)作了80端口映射。
此架构需考虑的问题:
1、Master运行,则Master占有vip且Nginx能够正常服务;
2、Master挂了,则Backup抢占vip且Nginx能够正常服务;
3、任何一台前端nginx服务挂了,则vip资源转移到另一台服务器上,并发送提醒邮件;
4、nginx需要检测后端服务器的健康状态(由于应用是挂在默认网站下的虚拟目录,且无法更改,必须能够对虚拟目录进行健康检查)
5、由于应用需要Session保持,但由于没有做Session共享,实际服务器角色转换时,应用会受到一定的影响。
三、安装前的准备工作
CentOS7环境下,默认是使用FireWallD服务,即使你修改了iptables,重启又被初始化了,需要再次手动systemctl restart iptables.service才能使设置的iptables生效,由于FireWallD暂时还没有熟悉使用方法且不知道他比iptables到底有哪些优势,保险起见,还是换回原先的iptables
1、关闭firewall:
[root@node-01 ~]# systemctl stop firewalld.service
#停止firewall
[root@node-01 ~]# systemctl disable firewalld.service 或 systemctl mask firewalld.service
#禁止firewall开机启动
2、安装iptables防火墙
[root@node-01 ~]# yum install iptables-services -y
[root@node-01 ~]# systemctl enable iptables
3、在进行Keepalived和nginx配置前,务必将集群内的几台主机的通讯相互完全放行(并开放80的Web访问规则),否则很有可能出现脑裂或其他问题,可直接在配置文件内加入以下语句;
[root@node-01 ~]# vi /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -s 172.21.4.51 -j ACCEPT
-A INPUT -s 172.21.4.52 -j ACCEPT
-A INPUT -s 172.21.4.91 -j ACCEPT
-A INPUT -s 172.21.4.92 -j ACCEPT
[root@node-01 ~]# systemctl restart iptables.service
四、Keepalived与Nginx的安装
1、安装ipvsadm
[root@node-01 ~]# yum install ipvsadm
[root@node-01 ~]# ipvsadm -v
ipvsadm v1.27 2008/5/15 (compiled with popt and IPVS v1.2.1)
ipvs(IP Virtual Server)是整个负载均衡的基础,如果没有这个基础,故障隔离与失败切换就毫无意义了。ipvs 具体实现是由 ipvsadm 这个程序来完成的。CentOS7.1默认自带安装了。
2、安装keepalived(其实7.1自带了)
[root@node-01 ~]# yum install keepalived
[root@node-01 ~]# keepalived -v
Keepalived v1.2.13 (03/06,2015)