HA高可用+ngixg负载均衡

回复 收藏
本帖最后由 liang 于 2016-4-26 21:54 编辑

网站业务架构演变过程
http://www.apelearn.com/bbs/foru ... d=8644&fromuid=6493


阅读上面的文章后做的实验
实验1:一台WEB服务器一台mysql服务器
http://www.apelearn.com/bbs/foru ... =11876&fromuid=6493
实验2:web服务器添加memcached
http://www.apelearn.com/bbs/foru ... =11884&fromuid=6493

实验3:两台Web服务器+mysql主从
http://www.apelearn.com/bbs/thread-11903-1-1.html


实验四:HA高可用+ngixg负载均衡+mysql主从
QQ截图20160422231630.png

实验三中使用DNS轮询负载均衡,当一台web出问题会有一半的用户无法访问,所以在实验三的基础上增加两台服务器,做HA高可用,Nginx负载均衡,停掉mysql-m服务器中的DNS
HA-master   eth0192.168.2.16     eth1 192.168.5.109      hearbeat nginx
HA-slave     eth0192.168.2.17      eth1 192.168.5.110      hearbeat  nginx
web1         eth0192.168.2.128     eth1 192.168.5.104      LNMP+NFS_server
web2         eth0 192.168.2.9        eth1 192.168.5.105      LNMP+NFS_client
mysql-m    eth0 192.168.2.5        eth1 192.168.5.101       Mysql
mysql-s     eth0 192.168.2.10      eth1 192.168.5.108       Mysql
eth0 都为外网IP,eth1都为内网IP

一,安装之前
(1)关闭防火墙
iptables -F;\
service iptables save
关闭selinux
setenforce 0;\
sed -i 's/SELINUX=enforcing/SELINUX=disabled/'/etc/selinux/config

(2)配置host,主和从
vim /etc/hosts
192.168.2.16 HA-master      ##hostname  为uname –n的名字
192.168.2.17 HA-slave

(3)安装扩展源epel,主和从
http://mirrors.aliyun.com/repo/ 阿里云的epel源
wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-6.repo   6.x
yum clean all;\
yum makecache
yum install -y epel-release

二,主、备上配置nginx做负载均衡
yum install -y nginx

1,主,备配置
vim /etc/nginx/conf.d/lb.conf
upstream test {            ##定义后端RS,test为自定以名,和proxy_pass 保持一致
    #ip_hash;                ##调度算法,一个用户请求被分到固定RS上,避免session丢失(实验时访问IP是不变的可注释)
    server192.168.2.3:80 weight=2;      ##默认为80端口,权重2,
    server192.168.2.8:80 weight=1;
}
server {
    listen 80;
    server_namewww.test.com;
    location / {
       proxy_pass      http://test/;
       proxy_set_header Host   $host;
       proxy_set_header X-Real-IP     $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      }
}
清除防火墙
ipvsadm -C
iptables -t nat -F
iptables –F
         
三,安装配置安装heartbeat,主和备
yum install –y heartbeat* libnet

1,主上配置
cd /usr/share/doc/heartbeat-3.0.4/
cp authkeys ha.cf  haresources  /etc/ha.d
cd /etc/ha.d

(1)vim  authkeys                   ##修改验证文件
auth 3                                    ##修改验证级别
#1 crc
#2 sha1 HI!
3 md5 Hello!                           ##打开第三级别
chmod 600 authkeys             ##修改权限

(2)vim haresources
#node1 10.0.0.170 Filesystem::/dev/sda1::/data1::ext2    修改这行为
HA-master  172.16.1.110/24/eth0:0  nginx               ##设置动态虚拟IP
(3)vim ha.cf  修改以下内容
debugfile  /var/log/ha-debug           ##调试信息
logfile  /var/log/ha-log                      ##日志文件
logfacility    local0                           ##日志级别
keepalive 2                              ##心跳时间间隔,多长探测一次,单位秒
deadtime 30                            ##超出多久没有到对方心跳,默认对方以死亡
warntime 10                            ##超出多久没有到对方心跳,发出警告并记录日志
initdead 60                              ##对方重启等待时间
udpport 694                            ##广播通信端口,默认694
ucast eth1 192.168.5.110            ##设置对方心跳检测的网卡和IP
auto_failback on                                    ##自动恢复
node    HA-master             ##指定主从,名字要和uname -n的结果一致
node    HA-slave
ping 192.168.5.2
respawn hacluster /usr/lib64/heartbeat/ipfail    ##指定与heartbeat一同启动的进程,注意路径
三个文件修改后,拷贝到备
scp  authkeys  ha.cf haresources  HA-slave:/etc/ha.d/

2,备上配置
cd  /etc/ha.d/
vim ha.cf
ucast eth1 192.168.5.109         修改对方的心跳检测IP

3,启动heartbeat
先主,后备
ps aux |grep nginx                 ##查看nginx是否启动
service heartbeat start        ##启动会较慢
ifconfig 查是否有eth0:0: 172.16.1.110

四,测试
1,       测试负载均衡
Web1与Web2是做NFS根目录共享,所以先卸载web2/NFS_client上挂载的网站根目录
umount 192.168.5.104:/data/www/
在web1,web2 网在根目录建立测试文件
echo “web11111”>1.txt
echo “web22222”>1.txt
windows上修改hosts
172.16.1.110  www.test.com
浏览器中访问 www.test.com/1.txt 查看是否安设置的权重分发访问
或者vim /etc/hosts     172.16.1.110  www.test.com
curl www.test.com/1.txt

重新挂载NFS共享目录
mount -t nfs -onolock,nfsvers=3192.168.5.104:/data/www/ /data/www/

2,测试高可用
测试1
主上故意禁ping
iptables -I INPUT -p icmp -j DROP
测试2
主上停止heartbeat服务
service heartbeat stop
测试脑裂
主和备上都down掉eth1网卡
ifdown eth1

最后的测试过程感觉不怎么好,过程有误的地方请指正







2016-04-22 23:28 举报
已邀请:
0

150411100

赞同来自:

谢谢分享,学习了。

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: