LVS+Keepalived+nginx安装及配置

1 环境
操作系统Centos 6.4 X86_64
LVS-Master:10.0.80.205
LVS-Backup:10.0.80.206
VIP:10.0.80.210
RS01:10.0.80.199
RS02:10.0.80.200
2 安装LVS软件(分别在LVS-Master和LVS-Backup中)
2.1.查看是否有IPVS模块

LVS是Linux标准内核的一部分,直接被编译在内核中!

#使用modprobe命令查看

[root@Centos205 ~]# modprobe -l | grep ipvs    

2.2.安装IPVS管理工具
[root@Centos205 ~]# yum install ipvsadm
3 安装keepalived(分别在LVS-Master和LVS-Backup中)
3.1 安装keepalived并配置
[root@Centos205 ~]# yum install keepalived
[root@Centos205 ~]# vi/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 Centos-206 #唯一别名
}


vrrp_instance VI_1 {
    state MASTER  #备BACKUP
    interface eth0  #进行通信的端口
    virtual_router_id 210 #同一个vrrp实例的唯一标识。即同一个vrrp_stance,MASTER和BACKUP的virtual_router_id是一致的。在整个vrrp内也唯一
    priority 100 #权重,数值越大,权重越大。MASTER大于SLAVE
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
  		10.0.80.210
    }
}


virtual_server 10.0.80.210 80 {
    delay_loop 6 #服务健康检查周期,6秒
    lb_algo lc #负载均衡调度算法rr|wrr|lc|wlc|sh|dh|lblc
    lb_kind DR #负载均衡转发规则NAT|DR|TUN
    persistence_timeout 50 #回话保持时间,如果是动态服务,建议开启。默认50秒
    protocol TCP #转发协议类型,支持 TCP 、UDP


    real_server 10.0.80.199 80 {
        weight 1
        # 该节点服务器处于 DOWN 状态后执行的脚本
        # notify_down /etc/keepalived/real_down.sh     
        TCP_CHECK { # 健康检测方式,支持 HTTP_GET 、SSL_GET 、TCP_CHECK 、SMTP_CHECK 、MISC_CHECK
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }


    real_server 10.0.80.200 80 {
        weight 1
         TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
}


3.2.启动keepalived
设置keepalived服务自启动,检查是否生效
[root@Centos205 ~]# service keepalived start


#查看ipvs规则是否生效
[root@Centos205 keepalived]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.0.80.210:80 lc persistent 50
  -> 10.0.80.199:80               Route   1      0          0         
  -> 10.0.80.200:80               Route   1      0          0  


4 在LVS-Backup上安装LVS、keepalived并配置
4.1 安装LVS、keepalived
[root@Centos206 ~]# yum install ipvsadm
[root@Centos206 ~]# yum install keepalived


4.2 配置LVS-Backup的keepalived
拷贝主的配置文件,做相应修改即可;
4.3启动LVS-Backup的keeplived服务,并检查是否生效
[root@Centos-206 ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.0.80.210:80 lc persistent 50
  -> 10.0.80.199:80               Route   1      0          0         
  -> 10.0.80.200:80               Route   1      0          0  


5 测试VIP,检查是否能主备切换
5.1 查看主VIP
启动keeplived后,先用ip addr显示主备服务器的VIP情况,当主备服务器同时启用keepalived时,只有主服务器拥有VIP地址,备服务器没有。
[root@Centos-205 ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:f7:87:cd brd ff:ff:ff:ff:ff:ff
    inet 10.0.80.205/24 brd 10.0.80.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 10.0.80.210/32 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fef7:87cd/64 scope link 
       valid_lft forever preferred_lft forever
[root@Centos-206 ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:92:aa:ee brd ff:ff:ff:ff:ff:ff
    inet 10.0.80.206/24 brd 10.0.80.255 scope global eth0
    inet6 fe80::20c:29ff:fe92:aaee/64 scope link 
       valid_lft forever preferred_lft forever


5.2 查看备VIP
    当停止主服务器的keepalived服务,再查看下主备服务器VIP地址,发现VIP地址已从主服务器转移到了备服务器;
[root@Centos-205 ~]# service keepalived stop
Stopping keepalived:                                       [  OK  ]
[root@Centos-205 ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:f7:87:cd brd ff:ff:ff:ff:ff:ff
    inet 10.0.80.205/24 brd 10.0.80.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fef7:87cd/64 scope link 
       valid_lft forever preferred_lft forever
       
[root@Centos-206 ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:92:aa:ee brd ff:ff:ff:ff:ff:ff
    inet 10.0.80.206/24 brd 10.0.80.255 scope global eth0
    inet 10.0.80.210/32 scope global eth0
    inet6 fe80::20c:29ff:fe92:aaee/64 scope link 
       valid_lft forever preferred_lft forever


5.3 日志查看主备切换
[root@Centos-205 ~]# tail -f /var/log/messages
Oct 27 12:10:06 Centos-205 Keepalived[4583]: Stopping Keepalived v1.2.13 (03/19,2015)
Oct 27 12:10:06 Centos-205 Keepalived_healthcheckers[4585]: Removing service [10.0.80.199]:80 from VS [10.0.80.210]:80
Oct 27 12:10:06 Centos-205 Keepalived_healthcheckers[4585]: Removing service [10.0.80.200]:80 from VS [10.0.80.210]:80
Oct 27 12:10:06 Centos-205 kernel: IPVS: __ip_vs_del_service: enter
Oct 27 12:10:06 Centos-205 Keepalived_vrrp[4586]: VRRP_Instance(VI_1) sending 0 priority
Oct 27 12:10:06 Centos-205 Keepalived_vrrp[4586]: VRRP_Instance(VI_1) removing protocol VIPs.


[root@Centos-206 ~]# tail -f /var/log/messages
Oct 26 21:11:06 Centos-206 Keepalived_vrrp[4002]: VRRP_Instance(VI_1) Transition to MASTER STATE
Oct 26 21:11:07 Centos-206 Keepalived_vrrp[4002]: VRRP_Instance(VI_1) Entering MASTER STATE
Oct 26 21:11:07 Centos-206 Keepalived_vrrp[4002]: VRRP_Instance(VI_1) setting protocol VIPs.
Oct 26 21:11:07 Centos-206 Keepalived_healthcheckers[4001]: Netlink reflector reports IP 10.0.80.210 added
Oct 26 21:11:07 Centos-206 Keepalived_vrrp[4002]: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 10.0.80.210
Oct 26 21:11:12 Centos-206 Keepalived_vrrp[4002]: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 10.0.80.210




2) 当主服务器重启keepalived后,主备服务器相关日志
[root@Centos-205 ~]# tail -f /var/log/messages
Oct 27 12:15:48 Centos-205 Keepalived_vrrp[4656]: VRRP_Instance(VI_1) Transition to MASTER STATE
Oct 27 12:15:48 Centos-205 Keepalived_vrrp[4656]: VRRP_Instance(VI_1) Received lower prio advert, forcing new election
Oct 27 12:15:49 Centos-205 Keepalived_vrrp[4656]: VRRP_Instance(VI_1) Entering MASTER STATE


[root@Centos-206 ~]# tail -f /var/log/messages
Oct 26 21:16:47 Centos-206 Keepalived_vrrp[4002]: VRRP_Instance(VI_1) Entering BACKUP STATE
Oct 26 21:16:47 Centos-206 Keepalived_vrrp[4002]: VRRP_Instance(VI_1) removing protocol VIPs.
Oct 26 21:16:47 Centos-206 Keepalived_healthcheckers[4001]: Netlink reflector reports IP 10.0.80.210 removed



6 配置WEB服务器,即realserver节点1和2
由于采用的是DR方式调度,Real_Server会以LVS的VIP来直接回复Client,所以需要在Real_Server的lo上开启LVS的VIP来与Client建立通信
6.1 配置web
#编辑一个lvsrs脚本,并放到/etc/init.d/下
[root@Centos-199 ~]#  vi /etc/init.d/lvsrs
#!/bin/bash
# chkconfig: 35 99 10
# Script to start LVS DR real server.
# description:tune lo:0 interface and arp response for lvs-real servers
#
.  /etc/rc.d/init.d/functions
VIP=10.0.80.210
host='/bin/hostname'
case "$1" in
start)
       # Start LVS-DR real server on this machine.
        echo " Start LVS of Real Server"
        /sbin/ifconfig lo down
        /sbin/ifconfig lo 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
        /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
        /sbin/route add -host $VIP dev lo:0
        sysctl -p >/dev/null 2>&1
        echo "RealServer Start OK"
;;
stop)
        # Stop LVS-DR real server loopback device(s).
        echo " Stop LVS of Real Server"
        /sbin/ifconfig lo:0 down
        /sbin/route del $VIP >/dev/null 2>&1
        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 "RealServer Stop OK"
;;
status)
        # Status of LVS-DR real server.
        islothere='/sbin/ifconfig lo:0 | grep $VIP'
        isrothere='netstat -rn | grep "lo:0" | grep $VIP'
        if [ ! "$islothere" -o ! "isrothere" ];then
            # Either the route or the lo:0 device
            # not found.
            echo "LVS-DR real server Stopped."
        else
            echo "LVS-DR real server Running."
        fi
;;
*)
            # Invalid entry.
            echo "$0: Usage: $0 {start|status|stop}"
            exit 1
;;
esac
exit 0


[root@Centos-199 ~]# chmod 755 /etc/init.d/lvsrs      #给新增lvsrs脚本一个755权限
[root@Centos-199 ~]# service lvsrs start              #启动lvsrs服务,我环境启动时出错,给一个functions 755权限,按各自环境操作   
/etc/init.d/lvsrs: line 7:./etc/rc.d/init.d/functions: Permission denied
 Start LVS ofReal Server
 
[root@web2init.d]# chmod 755 /etc/rc.d/init.d/functions    #给functions 755权限
[root@Centos-199 ~]# service lvsrs start                                         #启动lvsrs服务
 Start LVS ofReal Server
 
[root@Centos-199 ~]# ifconfig                                                        #查看已有一个VIP地址
eth0      Link encap:Ethernet  HWaddr 00:0C:29:CA:FD:55  
          inet addr:10.0.80.199  Bcast:10.0.80.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:feca:fd55/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:339595 errors:0 dropped:0 overruns:0 frame:0
          TX packets:398442 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:62341704 (59.4 MiB)  TX bytes:28856513 (27.5 MiB)


lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:3390 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3390 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:201482 (196.7 KiB)  TX bytes:201482 (196.7 KiB)


lo:0      Link encap:Local Loopback  
          inet addr:10.0.80.210  Mask:255.255.255.255
          UP LOOPBACK RUNNING  MTU:65536  Metric:1

 lvsrs另外一种写法(未测试)

#!/bin/bash
# chkconfig: 35 99 10
# Script to start LVS DR real server.
# description:tune lo:0 interface and arp response for lvs-real servers
. /etc/rc.d/init.d/functions
VIP=(
10.0.80.210
)
function start(){
		    echo " Start LVS of Real Server"
        /sbin/ifconfig lo down
        /sbin/ifconfig lo up
  for ((i=0;i<${#VIP[*]};i++))
      do
       echo ${i}  ${VIP[$i]}
       /sbin/ifconfig lo:${i} ${VIP[$i]} netmask 255.255.255.255 up
       /sbin/route add -host ${VIP[$i]} dev lo:${i}
       done
	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_announce
	echo "2">/proc/sys/net/ipv4/conf/all/arp_announce
	sysctl -p >/dev/null 2>&1
        echo "RealServer Start OK"
}
function  stop(){
  for ((i=0;i<${#VIP[*]};i++))
      do
       echo ${i}  ${VIP[$i]}
       /sbin/ifconfig lo:${i} ${VIP[$i]} netmask 255.255.255.255 up
       /sbin/route del -host ${VIP[$i]} dev lo:${i}
       done
	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 "RealServer Stop OK"
}
function status(){
        # Status of LVS-DR real server.
   for ((i=0;i<${#VIP[*]};i++))
      do
        islothere='/sbin/ifconfig lo:${i} | grep ${VIP[$i]}'
        isrothere='netstat -rn | grep "lo:${i}" | grep ${VIP[$i]}'
        if [ ! "$islothere" -o ! "isrothere" ];then
            # Either the route or the lo:0 device
            # not found.
            echo "LVS-DR ${VIP[$i]} real server Stopped."
        else
            echo "LVS-DR ${VIP[$i]} real server Running."
        fi
        done
}
case "$1" in
   start)
       start
       exit
       ;;
   stop)
       stop
       exit
       ;;
   status)
   		status
   	  exit
      ;;
   *)
       echo "You must use $0:stop|start|status"
       ;;
esac

nginx 在线安装

[root@Centos-199 ~]#vi /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/6/$basearch/
gpgcheck=0
enabled=1
[root@Centos-199 ~]#yum install nginx -y
[root@Centos-199 ~]#service nginx start


#确定Nginx是以那个config文件启动
[root@Centos-199 ~]#ps -ef | grep nginx
root       8539      1  0 Oct26 ?        00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
nginx      8541   8539  0 Oct26 ?        00:00:05 nginx: worker process                   
root      10694  10582  0 13:23 pts/1    00:00:00 grep nginx


#检查是否已经安装有nginx及对应目录:
[root@Centos-199 ~]# find /|grep nginx.conf
/etc/nginx/conf.d
/etc/nginx/conf.d/default.conf
/etc/nginx/nginx.conf



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值