jjfjjj 发表于 2018-12-30 09:36:54

lvs+keepalived+nginx环境部署



Redhat搭建centos镜像作为yum源



https://s2.运维网.com/wyfs02/M02/9B/64/wKioL1li4eexBxqaAAAPVU4mqmM195.png


2.删除原有的yum

# rpm -qa | grep yum |xargs rpm -e --nodeps
# rpm -qa | grep yum
3.下载需要的安装包
python-urlgrabber-3.9.1-11.el6.noarch.rpm
yum-metadata-parser-1.1.2-16.el6.x86_64.rpm
yum-3.2.29-81.el6.centos.noarch.rpm
yum-plugin-fastestmirror-1.1.30-40.el6.noarch.rpm
yum-utils-1.1.30-40.el6.noarch.rpm
4.安装rpm包
# rpm -ivh --force python-urlgrabber-3.9.1-11.el6.noarch.rpm
# rpm -ivh yum-*.rpm
# mkdir /yum
上传镜像到/yum目录下面,并且配置yum源
# cd /etc/yum.repos.d/
# vi redhat.repo

name=RedHat
baseurl=file:///yum
enabled=1
gpgcheck=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
# yum clean all
# yum repolist
                        

             Nginx代理HA集群的配置


1.在两台机器上分别安装keepalived,做nginx代理的HA集群。


主机安装keepalived
# tar -zxvf keepalived-1.2.7.tar.gz
# cd keepalived-1.2.7
# yum -y install popt-devel
# ./configure --prefix=/usr/local/keepalived/
# make
# make install
# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
# cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
# mkdir /etc/keepalived
# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
# cd /etc/keepalived/
# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
   notification_email {
   acassen@firewall.loc
   failover@firewall.loc
   sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_instance VI_1 {
    state MASTER                (主的身份)
    interface eth0                (主的网卡接口)
    virtual_router_id 51
    mcast_src_ip 192.168.0.111      (主的IP地址)
    priority 100
    advert_int 1
    authentication {
      auth_type PASS
      auth_pass 1111
    }
    virtual_ipaddress {
      192.168.0.114
    }
}
备机安装keepalived
安装过程一致如上,配置文件如下
# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
   notification_email {
   acassen@firewall.loc
   failover@firewall.loc
   sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_instance VI_1 {
    state SLAVER
    interface eth0
    virtual_router_id 51
    mcast_src_ip 192.168.0.112
    priority 90
    advert_int 1
    authentication {
      auth_type PASS
      auth_pass 1111
    }
    virtual_ipaddress {
      192.168.0.114
    }
}
2.两台机器上启动keepalived服务
# servicekeepalived restart
3.在主机上查看是否有虚拟IP地址
https://s4.运维网.com/wyfs02/M02/99/91/wKiom1lJ4Ajj50qqAAAtkMRTPnQ912.png-wh_500x0-wm_3-wmp_4-s_2535181703.png
4.监控和主备切换
编写脚本
# cat nginx_check.sh
#!/bin/bash
a=`ps -C nginx --no-header | wc -l`
if [ $a -eq 0 ];then
    /usr/local/nginx/sbin/nginx &> /dev/null
    sleep 3
    if [ `ps -C nginx --no-header | wc -l` -eq 0 ];then
      service keepalived stop &> /dev/null
    fi
fi
# chmod +x /root/nginx_check.sh
脚本写好后,现在到keepalived的配置文件中调用脚本
# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
   notification_email {
   acassen@firewall.loc
   failover@firewall.loc
   sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_script check_nginx_status {
    script "/root/nginx_check.sh"
    interval 2
    }
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    mcast_src_ip 192.168.0.111
    priority 100
    advert_int 1
    authentication {
      auth_type PASS
      auth_pass 1111
    }
    track_script {
      check_nginx_status
    }
    virtual_ipaddress {
      192.168.0.114
    }
}


Lvs负载均衡
1.在主机器上安装ipvsadm
# yum -y install ipvsadm
2.使用keepalived来管理lvs
# cat/etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
   notification_email {
   acassen@firewall.loc
   failover@firewall.loc
   sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_script check_nginx_status {
    script "/root/nginx_check.sh"
    interval 2
    }
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
      auth_type PASS
      auth_pass 1111
    }
   track_script {
      check_nginx_status
    }
    virtual_ipaddress {
      192.168.0.114
    }
}
virtual_server 192.168.0.114 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.255.0
    persistence_timeout 50
    protocol TCP
    real_server 192.168.0.111 80 {
      weight 1
      TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
    }
}
    real_server 192.168.0.112 80 {
      weight 1
      TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
      }
    }
}
3.编写lvs管理脚本
# cat lvs_keepd.sh
#!/bin/sh
#description:start realserver
vip=192.168.0.114
source /etc/rc.d/init.d/functions
case "$1" in

start)
    echo "start server"
    /sbin/ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
    echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
    echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
    echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
    echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
;;
stop)
    echo "stop server"
    /sbin/ifconfig lo:0 down
    echo "0" > /proc/sys/net/ipv4/conf/lo/arp_ignore
    echo "0" > /proc/sys/net/ipv4/conf/lo/arp_announce
    echo "0" > /proc/sys/net/ipv4/conf/all/arp_ignore
    echo "0" > /proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
    echo "Usage: $0 (start | stop)"
exit 1
esac
exit 0
4.启动脚本
# bash /root/lvs_keepd.sh start

5.测试lvs是否启动
# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port         Forward Weight ActiveConn InActConn
TCP192.168.0.114:80 rr persistent 50
-> 192.168.0.111:80             Local   1      1          0         
-> 192.168.0.112:80             Route   1      0          0         
备机上操作也是一样
  

  




页: [1]
查看完整版本: lvs+keepalived+nginx环境部署