我画的拓扑
环境:
VMware 14
7个CentOS 6.5虚拟机
外部网段200.0.0.0/24,内部网段192.168.1.0/24
内部有5台虚拟主机,分别为两台lvs实现高可用,两台rs提供web服务,一台实现nfs网络存储
各虚拟机的防火墙均已关闭
- 各主机ip
外部主机:eth0:200.0.0.2
充当路由器的主机:eth0:192.168.1.1,eth1:200.0.0.1
rs1:eth0:192.168.1.2,lo:0:192.168.1.6
rs2:eth0:192.168.1.3,lo:0:192.168.1.6
lvs1:eth0:192.168.1.4
lvs2:eth0:192.168.1.5
需要的软件:
Keepalived-1.2.13
在lvs1和lvs2上的操作
- 配置ip
- 安装Keepalived
- 安装支持软件,kernel-devel openssl-devel popt-devel ipvsadm
- 编译安装keepalived
./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.32-431.el6.x86_64 && make && make install
- 安装ipvsadm(启动模块:modprobe ip_vs)
使用ipvsadm -ln命令可以查看和监控集群 - 在sysctl.conf修改内核参数,关闭ICMP重定向:
添加这几行内容
vim /etc/sysctl.conf
net.ipv4.conf.all.send_redirects=0
net.ipv4.conf.default.send_redirects=0
net.ipv4.conf.eth0.send_redirects=0
使用sysctl -p命令使参数生效
- 修改配置文件,配置文件位置:/etc/keepalived/keepalived.conf
主从keepalived实现1、故障切换2、负载均衡3、节点健康检查
- 在主上的配置,集群vip为192.168.1.6:
- rr(轮询调度算法)DR(直接路由DR集群工作模式)TCP_CHECK节点健康检查方式
real_server的ip是rs1和2的ip
- 在从上配置,修改名称,slave,优先级等
- 开启keepalived服务
- 在主上的配置,集群vip为192.168.1.6:
在rs1和rs2上的操作
- 网卡配置lo:0虚拟IP:192.168.1.6
- 关闭NetworkManager
/etc/init.d/NetworkManager stop
- 在sysctl.conf修改内核参数,关闭ARP响应:
vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.default.arp_ignore=1
net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
net.ipv4.conf.default.arp_announce=2
net.ipv4.conf.lo.arp_announce=2
sysctl -p命令使参数生效
- 加一条本地路由(到达群集地址(VIP)的数据包不在转发出去了)
route add -host 192.168.1.6 dev lo:0 - 开启web服务测试(两台主机编辑不同的测试页)
在路由器主机上的操作
- 添加两块网卡eth0和eth1
- 关闭NetworkManager
- 开启路由转发(sysctl.conf)net.ipv4.ip_forward=1
- 添加一条目标地址转换的防火墙策略
iptables -t nat -A PREROUTING -i eth1 -d 200.0.0.1 -p tcp –dport 80 -j DNAT –to 192.168.1.6:80
在外部主机访问200.0.0.1测试
网络存储
安装rpcbind,nfs-utils
vim /etc/exports
/var/www/html *(rw,sync,no_root_squash)
服务开启顺序
1. rpcbind
2. nfs
在rs1和2上执行命令
showmount -e 192.168.1.7
mount 文件系统