Keepalived+LVS配置高可用服务器

来源:互联网 发布:人造奶油危害 知乎 编辑:程序博客网 时间:2024/06/05 09:11

keepalived 高可用集群实践【故障切换转移原理VRRP

安装keepalived:yum –y install keepalived【安装路径/etc/keepalived/】

启动keepalived:service keepalived start

启动后有3个进程表示安装正确:ps -ef|grep keep|grep -v grep

配置文件:/etc/keepalived/keepalived.conf

 

内容说明【keepalived.conf

全局定义:

global_defs: 全局配置标识,表面下面的区域{}是全局配置

notification_email:邮箱地址,可多个,每行一个,发生操作时发邮件到配置上的邮箱,

notification_email_from:表示发送通知邮件时邮件源地址是谁

smtp_server:表示发送email时使用的smtp服务器地址,可以填127.0.0.1

smtp_connect_timeout:连接smtp超时时间

router_id:服务器的路由标识,同一个局域网内是唯一的,通常为hostname

VRRP实例定义区块

vrrp_instance:vrrp实例名:各服务器上实例配置域,每个vrrp_instance实例可以认为是keepalived服务的一个实例,这样的实例可以配置多个,存在主节点的配置实例,备节点上也要有。

state:实例状态,只有MASTER 和 BACKUP两种状态,并且需要全部大写

interface:对外提供服务的网卡接口,即VIP绑定的网卡接口。主流2个或2个以上的接口

virtual_router_id:虚拟路由的ID号,主备节点必须一样,唯一的,他将决定多播的 MAC 地址。

priority:节点优先级,取值范围0~254,MASTER要比BACKUP高,一般相隔50

advert_int:MASTER与BACKUP节点间同步检查的时间间隔,单位为秒

authentication:验证类型和验证密码。类型主要有 PASS、AH 两种,通常使用PASS类型。【认证

virtual_ipaddress:虚拟IP地址池,可以有多个IP,每个IP占一行,配置时最好明确指出子网掩码以及虚拟IP绑定的网络接口,接口与前面的interface参数配置一样。

注意:这个IP是我们工作中需要和域名绑定的IP,即和配置的高可用服务监听的IP保持一致

 

虚拟服务器virtual_server定义块【VIP虚拟IP】

virtual_server:定义一个虚拟服务器加端口号,这个ip是virtual_ipaddress中定义的其中一个

delay_loop:健康检查时间间隔,单位:秒

lb_algo:负载均衡调度算法【常用wlc加权最少连接或rr伦叫】

lb_kind:负载均衡转发规则【DR、NAT、TUN】

persistence_timeout:http服务会话保持时间秒【持久性_超时】

protocol:转发协议【TCP和UDP】

 

real_server:真实服务器IP和端口,可以定义多个

weight:负载权重,值越大,转发的优先级越高

notify_down:服务停止后执行的脚本

TCP_CHECK:服务有效性检测

connect_port:服务连接端口

connect_timeout:服务连接超时时长,秒

nb_get_retry:服务连接失败重试次数

delay_before_retry:重试连接间隔、秒

【virtual_serverIP 端口模块包括real_serverIP 端口模块】

 

配置keepalived实现单实例单IP自动接管:【帮助man keepalived.conf

【在Realserver里配置主备实例RIP】

【配置keepalived主备实例virtual_router_id、advert_int、authentication、virtual_ipaddress必须一致】

配置主服务器lb01MASTER10.0.0.7:

修改vi/etc/keepalived/keepalived.conf结果为:

! ConfigurationFile for keepalived

global_defs {               【全局配置标识】

   notification_email {     【邮箱地址】 

     1046465305-@qq.com

   }

   notification_email_from Alexandre.Cassen@firewall.loc    【发送通知邮件时邮件源地址】

   smtp_server 127.0.0.1        【发送email时使用的smtp服务器地址】

   smtp_connect_timeout 30      【连接smtp超时时间】

   router_id lb01               【服务器的路由标识,唯一】

}

vrrp_instanceVI_1 {            【实例名】

    state MASTER                【状态】

    interface eth0              【网卡接口】

    virtual_router_id 55        【虚拟路由的ID号,主备节点必须一样】

    priority 150                【节点优先级主高】

    advert_int 1                【MASTER与BACKUP节点间同步检查的时间间隔】

    authentication {            【验证类型和验证密码,类型PASS通用】

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {         【虚拟IP地址池,VIP地址】

        10.0.0.12/24 dev eth0 label eth0:1

    }

}

启动keepalived服务:service keepalived start

查看配置结果是否有虚拟IP10.0.0.12:ip addr|grep 10.0.0.12 有内容显示

配置备服务器lb02BACKUP

把主服务器修改内容:router_id  lb02   stateBACKUP      priority 100

启动keepalived服务:service keepalived start

查看配置结果是否有虚拟IP10.0.0.12:ip addr|grep 10.0.0.12 无内容显示

进行高可用主备服务器之间的切换:

停掉主服务器的keepalived服务,在备服务器上运行ip addr|grep 10.0.0.12,有内容显示。同理,主在运行,备就不显示内容。

 

【后面配置省略的】

virtual_server10.10.10.3 1358 { 【定义虚拟服务器VIP加端口号】

    delay_loop 3     【健康检查时间间隔】

    lb_algo rr           【负载均衡调度算法】

    lb_kind NAT          【负载均衡转发规则DR、NAT、TUN】

    nat_mask 255.255.255.0

    persistence_timeout 50  【http服务会话保持时间秒、持久连接】

    protocol TCP     【转发协议TCP和UDP】

 

    real_server 192.168.200.4 1358 {【真实服务器RIP和端口,可以定义多个】

        weight 1【负载权重,值越大,转发的优先级越高】

        HTTP_GET {       【健康状态检查】

            url {        【说明】

              path /testurl/test.jsp          【测试页面】

              digest640205b7b0fc66c1ea91c463fac6334d

            }

           { status_code 200  【返回的状态吗】

            connect_port <PORT> 【端口】}

            connect_timeout 3【服务连接超时时长】

            nb_get_retry 3【服务连接失败重试次数】

            delay_before_retry 3【重试连接间隔】

        }

       【一个Realserver可以配置多个URL】

    }

 

    real_server 192.168.200.5 1358 {    }

}

记录实时日志:tail –f/var/log/message

如果所有的Realserver都宕机,如何处理:在客户端启动httpd服务,提供说明界面,然后再real_server 192.168.200.41358{}上添加sorry_server 127.0.0.1 80【服务和端口】,重启keeplieved。

 

LVS+Keepalived在DR模式下配置高可用实用集群

两台负载均衡服务器和两台Realserver服务器

图解说明:


分别在LVS-Master和LVS-BACKUP上安装LVS和Keepalived

LVS-Master的配置文件如下

[root@linux5~]# cat /etc/keepalived/keepalived.conf

global_defs {

notification_email{

               jimo291@gmail.com    #email 通知

                   }

        notification_email_fromjimo291@gmail.com

        smtp_server 127.0.0.1

        smtp_connect_timeout 30

        router_id LVS1          # 设置lvs的id,在一个网络内应该是唯一的

}

vrrp_sync_grouptest {           #设置vrrp组

group {

        loadbalance

}

}

vrrp_instanceloadbalance {

        state MASTER       #设置lvs的状态,报错MASTER和BACKUP两种,必须大写

        interface eth0     #设置对外服务的接口

        lvs_sync_daemon_inteface eth0   #设置lvs监听的接口

        virtual_router_id 51                     #设置虚拟路由表示

        priority 180            #设置优先级,数值越大,优先级越高

        advert_int 5           #设置同步时间间隔

authentication{                    #设置验证类型和密码

        auth_type PASS

        auth_pass 1111

}

virtual_ipaddress{                #设置lvs vip

        192.168.1.115

}

}

virtual_server192.168.1.115 80 {

        delay_loop 6          #健康检查时间间隔

        lb_algo rr               #负载均衡调度算法

        lb_kind DR            #负载均衡转发规则

        #persistence_timeout 20  #设置会话保持时间,对bbs等很有用

        protocol TCP                #协议

        real_server 192.168.1.103 80 {

        weight 3                #设置权重

        TCP_CHECK {             【服务有效性检测】

        connect_timeout 3

        nb_get_retry 3

        delay_before_retry 3

        connect_port 80

}

}

        real_server 192.168.1.104 80 {

        weight 3

        TCP_CHECK {

        connect_timeout 3

        nb_get_retry 3

        delay_before_retry 3

        connect_port 80

}

}

}

 LVS-backup的配置文件如下【和主机的配置一样只要修改state和priority两项就可以了】

global_defs {

notification_email{

               jimo291@gmail.com

        }

        notification_email_fromjimo291@gmail.com

        smtp_server 127.0.0.1

        smtp_connect_timeout 30

        router_id LVS2

}

vrrp_sync_grouptest {

group {

        loadbalance

}

}

vrrp_instanceloadbalance {

        state BACKUP

        interface eth0

        lvs_sync_daemon_inteface eth0

        virtual_router_id 51

        priority 150

        advert_int 5

authentication{

        auth_type PASS

        auth_pass 1111

}

virtual_ipaddress{

        192.168.1.115

}

}

virtual_server192.168.1.115 80 {

        delay_loop 6

        lb_algo rr

        lb_kind DR

        #persistence_timeout 20

        protocol TCP

        real_server 192.168.1.103 80 {

        weight 3

        TCP_CHECK {

        connect_timeout 3

        nb_get_retry 3

        delay_before_retry 3

        connect_port 80

}

}

        real_server 192.168.1.104 80 {

        weight 3

        TCP_CHECK {         #【注意这之间有个空格】

        connect_timeout 3

        nb_get_retry 3

        delay_before_retry 3

        connect_port 80

}

}

}

分别在主备上启动keepalived: /etc/init.d/keepalived start

查看日志:tail -f/var/log/message

这里说的LVS.并不是用ipvsadm软件配置.而是直接用keepalived的virtual_server配置项控制的.

安装ipvsadm只是可以看到负载状况.其实只需要keepalived也可以实现负载均衡集群.

     

Realserver的配置【两台客户端的脚本都一样

cat/etc/rc.d/init.d/realserver.sh【755权限】

#!/bin/bash

# description:Config realserver lo and apply noarp

SNS_VIP=192.168.1.115

/etc/rc.d/init.d/functions

case"$1" in

start)

       ifconfig lo:0 $SNS_VIP netmask255.255.255.255 broadcast $SNS_VIP

       /sbin/route add -host $SNS_VIP dev lo:0

       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

       sysctl -p >/dev/null 2>&1

       echo "RealServer Start OK"

       ;;

stop)

       ifconfig lo:0 down

       route del $SNS_VIP >/dev/null2>&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 Stoped"

       ;;

*)

       echo "Usage: $0 {start|stop}"

       exit 1

esac

 

exit 0

在Realserver上启动这个脚本,并启动httpd服务。

测试说明:

在浏览器上输入VIP地址,通过主备负载均衡服务器调用Realserver1和Realserver2服务器http服务显示的网页内容,负载均衡启动LVS+Keepalived服务,Realserver启动http服务,停止任何一台机器都能够保证运行。

查看日志:更详细信息请查看日志,tail -f /var/log/messages

0 0