HAproxy+keepalived+nginx实验部署

Posted AKA|布鲁克林欧神仙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HAproxy+keepalived+nginx实验部署相关的知识,希望对你有一定的参考价值。

目录

部署Haproxy+keepalived

一,配置主服务器(haproxy)

1,关闭防火墙

  2,安装依赖环境

  3,编译安装haproxy

 4,haproxy服务配置文件修改

 2.keepalived配置

 二,备用服务器(haproxy)

1,haproxy配置(和主服务器相同)

2,keepalived配置

三,nginx1服务器配置

四,nginx2服务器配置

 五,访问测试(192.168.135.100)

关闭主服务器后,漂移ip由备份服务器承担 ,继续工作


部署Haproxy+keepalived

一,配置主服务器(haproxy)

根据上篇博客   操作,再添加一台haproxy服务器做(备用)边缘服务器,部署keepalived。

1,关闭防火墙

  2,安装依赖环境

[root@haproxy ~]#yum -y install pcre-devel zlib-devel gcc gcc-c++ make

  3,编译安装haproxy

tar zxvf haproxy-1.6.9.tar.gz    #解压安装包
cd haproxy-1.6.9/    #进入解压目录

make TARGET=linux2628 ARCH=x86_64     #进行编译
(TARGET=linux2628 表示内核版本,使用uname -r查看内核,如:2.6.18-371.el5,此时该参数用TARGET=linux26;kernel大于2.6.28的用TARGET=linux2628)
(ARCH=x86_64   系统位数,现在基本都是64位)

make install      # 安

 4,haproxy服务配置文件修改

[root@kya haproxy-1.5.19]#mkdir /etc/haproxy
[root@kya haproxy-1.5.19]#cp /opt/haproxy-1.5.19/examples/haproxy.cfg /etc/haproxy/
[root@kya haproxy-1.5.19]#cd /etc/haproxy/
[root@kya haproxy]#ls
haproxy.cfg

 删除将原来的listen配置项,添加新配置:
listen webcluster 0.0.0.0:80
       option httpchk GET /index.html
       balance roundrobin
       server nginx1 192.168.135.90:80 check inter 2000 fall 3
       server nginx2 192.168.135.91:80 check inter 2000 fall 3
 

 5,添加haproxy系统服务 

cp /opt/haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy
chmod +x /etc/init.d/haproxy
chkconfig --add /etc/init.d/haproxy

ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
service haproxy start    或    /etc/init.d/haproxy start //如果ningx服务器未部署会提示找不到web服务器,可以等web部署完后再开启haproxy

 systemctl stop firewalld
 setenforce 0
 yum -y install gcc gcc-c++ make pcre-devel bzip2-devel
tar zxvf haproxy-1.6.9.tar.gz
 cd haproxy-1.6.9/
 make TARGET=linux2628 ARCH=x86_64     #进行编译
 make install


 mkdir /etc/haproxy   #创建haproxy目录
 cp examples/haproxy.cfg /etc/haproxy/  #将软件包中的配置文件模板复制到haproxy目录中
 cd
 vim /etc/haproxy/haproxy.cfg  #修改haproxy.cfg配置参数

下面两项前面加上注释
#chroot /usr/share/haproxy     #固有目录,可注释掉
#redispatch       #当使用了cookie时,haproxy将会将其请求的后端服务器的serverID插入到cookie中,以保证会话的SESSION持久性;而此时,如果后端的服务器宕掉了,但是客户端的cookie是不会刷新的,如果设置此参数,将会将客户的请求强制定向到另外一个后端server上,以保证服务的正常。需要注释掉

删除将原来的listen配置项,添加新配置:
listen webcluster 0.0.0.0:80
       option httpchk GET /index.html
       balance roundrobin
       server nginx1 192.168.135.90:80 check inter 2000 fall 3
       server nginx2 192.168.135.91:80 check inter 2000 fall 3


优化服务启动:
cp haproxy-1.4.24/examples/haproxy.init /etc/init.d/haproxy
 vi /etc/init.d/haproxy

修改:
# chkconfig: 35 85 15

 chmod 755 /etc/init.d/haproxy
 chkconfig --add /etc/init.d/haproxy
 ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
 systemctl start haproxy

 2.keepalived配置

 
 yum -y install gcc gcc-c++ make popt-devel kernel-devel openssl-devel
yum -y install keepalived
 
 cp keepalived/etc/init.d/keepalived /etc/init.d ###加入系统管理服务
 systemctl enable keepalived.service ###设置开机自启动
 vi /etc/keepalived/keepalived.conf ###编辑配置文件


删除原有配置,重新添加:

! Configuration File for keepalived
global_defs                   #全局参数
  router_id LVS_01            #指定名称,各个服务器名称要不一样

vrrp_instance VI_1            #指定vrrp热备参数
  state MASTER                 #服务器角色是master,备份服务器设置为BACKUP
  interface ens33               #修改物理网卡名称,默认是centos6的eth0 
  virtual_router_id 10          #组号相同
  priority 150                 #优先级,主服务器设置要大于备服务器
  advert_int 1
  authentication
   auth_type PASS               #验证类型和密码,不建议修改
   auth_pass 123

virtual_ipaddress
  192.168.135.100               #漂移地址(VIP)地址,可以有多个
 

[root@haproxy2 ~]# systemctl start keepalived
[root@haproxy2 ~]# ip addr
 

yum -y install gcc gcc-c++ make popt-devel kernel-devel openssl-devel
 

yum -y install keepalived

vim /etc/keepalived/keepalived.conf 

删除原有配置,重新添加

! Configuration File for keepalived
global_defs                   #全局参数
  router_id LVS_01              #指定名称,各个服务器名称要不一样

vrrp_instance VI_1            #指定vrrp热备参数
  state MASTER                  #服务器角色是master,备份服务器设置为BACKUP
  interface ens33               #修改物理网卡名称,默认是centos6的eth0 
  virtual_router_id 10          #组号相同
  priority 150                  #优先级,主服务器设置要大于备服务器
  advert_int 1
  authentication
   auth_type PASS               #验证类型和密码,不建议修改
   auth_pass 123

virtual_ipaddress
  192.168.135.100               #漂移地址(VIP)地址,可以有多个
 

 二,备用服务器(haproxy)

1,haproxy配置(和主服务器相同)

 systemctl stop firewalld
 setenforce 0
 yum -y install gcc gcc-c++ make pcre-devel bzip2-devel
tar zxvf haproxy-1.6.9.tar.gz
 cd haproxy-1.6.9/
 make TARGET=linux2628 ARCH=x86_64     #进行编译
 make install


 mkdir /etc/haproxy   #创建haproxy目录
 cp examples/haproxy.cfg /etc/haproxy/  #将软件包中的配置文件模板复制到haproxy目录中
 cd
 vim /etc/haproxy/haproxy.cfg  #修改haproxy.cfg配置参数

下面两项前面加上注释
#chroot /usr/share/haproxy     #固有目录,可注释掉
#redispatch       #当使用了cookie时,haproxy将会将其请求的后端服务器的serverID插入到cookie中,以保证会话的SESSION持久性;而此时,如果后端的服务器宕掉了,但是客户端的cookie是不会刷新的,如果设置此参数,将会将客户的请求强制定向到另外一个后端server上,以保证服务的正常。需要注释掉

删除将原来的listen配置项,添加新配置:
listen webcluster 0.0.0.0:80
       option httpchk GET /index.html
       balance roundrobin
       server nginx1 192.168.135.90:80 check inter 2000 fall 3
       server nginx2 192.168.135.91:80 check inter 2000 fall 3


优化服务启动:
cp haproxy-1.4.24/examples/haproxy.init /etc/init.d/haproxy
 vi /etc/init.d/haproxy

修改:
# chkconfig: 35 85 15

 chmod 755 /etc/init.d/haproxy
 chkconfig --add /etc/init.d/haproxy
 ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
 systemctl start haproxy

前面已经做过直接看keepalived配置

2,keepalived配置

 yum -y install gcc gcc-c++ make popt-devel kernel-devel openssl-devel
yum -y install keepalived
 
 cp keepalived/etc/init.d/keepalived /etc/init.d ###加入系统管理服务
 systemctl enable keepalived.service ###设置开机自启动
 vi /etc/keepalived/keepalived.conf ###编辑配置文件


删除原有配置,重新添加:

! Configuration File for keepalived
global_defs                   #全局参数
  router_id LVS_02           #指定名称,各个服务器名称要不一样

vrrp_instance VI_1            #指定vrrp热备参数
  state BACKUP                 #服务器角色是master,备份服务器设置为BACKUP
  interface ens33               #修改物理网卡名称,默认是centos6的eth0 
  virtual_router_id 10          #组号相同
  priority 140                 #优先级,主服务器设置要大于备服务器
  advert_int 1
  authentication
   auth_type PASS               #验证类型和密码,不建议修改
   auth_pass 123

virtual_ipaddress
  192.168.135.100               #漂移地址(VIP)地址,可以有多个
 

[root@haproxy2 ~]# systemctl start keepalived
[root@haproxy2 ~]# ip addr

yum -y install gcc gcc-c++ make popt-devel kernel-devel openssl-devel

yum -y install keepalived

vim /etc/keepalived/keepalived.conf 

删除原有配置,重新添加

! Configuration File for keepalived
global_defs                   #全局参数
  router_id LVS_02             #指定名称,各个服务器名称要不一样

vrrp_instance VI_2            #指定vrrp热备参数
  state BACKUP                  #服务器角色是master,备份服务器设置为BACKUP
  interface ens33               #修改物理网卡名称,默认是centos6的eth0
  virtual_router_id 10          #组号相同
  priority 140                  #优先级,主服务器设置要大于备服务器
  advert_int 1
  authentication
   auth_type PASS               #验证类型和密码,不建议修改
   auth_pass 123

virtual_ipaddress
  192.168.135.100               #漂移地址(VIP)地址,可以有多个
 

 

三,nginx1服务器配置

[root@nginx1 ~]# systemctl stop firewalld
[root@nginx1 ~]# setenforce 0

[root@nginx1 nginx-1.12.2]# cd
[root@nginx1 ~]# echo "<h1>192.168.135.90</h1>" > /usr/local/nginx/html/index.html    #创建首页内容
[root@nginx1 ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin    #优化启动项
[root@nginx1 ~]# nginx
[root@nginx1 ~]#  netstat -anpt | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      58600/nginx: master 
systemctl start nginx

四,nginx2服务器配置

[root@nginx1 ~]# systemctl stop firewalld
[root@nginx1 ~]# setenforce 0

[root@nginx1 nginx-1.12.2]# cd
[root@nginx1 ~]# echo "<h1>192.168.135.91</h1>" > /usr/local/nginx/html/index.html    #创建首页内容
[root@nginx1 ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin    #优化启动项
[root@nginx1 ~]# nginx
[root@nginx1 ~]#  netstat -anpt | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      58600/nginx: master 
systemctl start nginx

 五,访问测试(192.168.135.100)

关闭主服务器后,漂移ip由备份服务器承担 ,继续工作

 

 

 再次开启主服务器

LVS/Nginx/HAProxy keepalived/heartbeat总结

LVS/Nginx/HAProxy集群

1.一般中小型的web应用,比如日pv(访问量)小于1000万,用Nginx作负载均衡就可以了。

2.大型网站或重要的服务,且服务器比较多时,可以考虑用lvs。

3.目前比较流行的方案,web前端用Nginx/HAProxy+keepalived作负载均衡,后端用MySQL数据库一主多从和读写分离,采用lvs+keepalived架构。

就阶段而言,

第一阶段,单点的负载均衡Nginx/HAProxy,此时服务器刚脱离单服务器、单数据库模式,需要一定的负载均衡,但规模较小。

第二阶段,网络服务扩大,Nginx不能满足的情况,将Nginx作为LVS的节点来用,或者购买商业的负载均衡设备。

第三阶段,处于成本及自身产品的量身定制,LVS成为主流。

第四阶段,理想架构,Array/LVS+Nginx/HAProxy+Squid/Varnish+AppServer.

keepalived/heartbeat集群

1.heartbeat通过心跳进行通信和选举,keepalived通过VRRP协议进行通信和选举。

2.heartbeat有三个配置文件,keepalived只有一个配置文件。keepalived使用起来更简单,heartbeat配套工具更多,功能更强大。

3.heartbeat的脚本有限制约束,必须要支持 start/stop/restart,keepalived脚本没有约束。

4.heartbeat的目的是用户service的双机,keepalived的目的是模拟路由器的双机,建议业务用heartbeat,LVS用keepalived。

以上是关于HAproxy+keepalived+nginx实验部署的主要内容,如果未能解决你的问题,请参考以下文章

HAproxy+keepalived+nginx实验部署

LVS/Nginx/HAProxy keepalived/heartbeat总结

haproxy+keepalived搭建nginx+lamp集群

haproxy+keepalived实现高可用

Haproxy+Keepalived构建高可用负载均衡集群

haproxy+keepalived群集