虚拟机环境部署keepalived

1.准备环境:

主机

角色

Ip

keepalived-master

主keepalived节点+lvs

192.168.100.10

Keepalived-node

备keepalived节点+lvs

192.168.100.20

web1

主web节点

192.168.100.30

web2

备web节点

192.168.100.40

系统使用的是CentOS-7-x86_64-DVD-1810.iso

2.前置条件(每一台)

2.1配置网络

vi /etc/sysconfig/network-scripts/ifcfg-ens33

修改如下:

BOOTPROTO="static"

ONBOOT="yes"

末尾添加如下:

IPADDR=192.168.100.10

NETMASK=255.255.255.0

GATEWAY=192.168.100.2

DNS1=114.114.114.114

DNS2=8.8.8.8

注意大写和格式,ip根据实际情况填写

重启网络之后即可工具连接,

2.2验证网络状态

ping baidu.com

如果可以通说明配置没问题,不通检查dns和网关

2.3修改名称

hostnamectl set-hostname keepalived-master

login

2.4关闭防火墙、selinux、iptables

systemctl stop firewalld

systemctl disable firewalld

vi /etc/selinux/config

修改:SELINUX=disabled

关闭iptables

systemctl stop iptables

或者

 iptables -F

 iptables -X

 iptables -Z

 /usr/sbin/iptables-save

2.5拍摄快照

防止后续出现问题,前置条件最后可以拍摄快照

3.配置web服务器(两个web服务器)

3.1安装nginx

yum安装使用网络源

yum install gcc-c++ zlib zlib-devel openssl openssl--devel pcre pcre-devel -y

rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

yum -y install nginx -y

开启服务:

systemctl start nginx

systemctl enable nginx

yum install -y net-tools

netstat -tpnl   #查看端口

浏览器访问成功:

3.2更换nginx主页内容

web服务不同体现keepalived功能

vi /usr/share/nginx/html/index.html

根据自己喜好修改,或者跟我一样修改标题

重启nginx服务:

systemctl restart nginx

更改生效

3.3生成vip:(主节点先生成)

vi /etc/init.d/vip_set.sh

#!/bin/bash

    #Author:chenjian

    #Date:2020-06-29

    vip=192.168.100.50

    mask='255.255.255.255'

    dev=lo:1

    case $1 in

    start)

        echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

        echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

        echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

        echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

        ifconfig $dev $vip netmask $mask broadcast $vip up

        #route add -host $vip dev $dev

        echo "The RS Server is Ready!"

        ;;

    stop)

        ifconfig $dev down

        echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore

        echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore

        echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce

        echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce

        echo "The RS Server is Canceled!"

        ;;

    *)

        echo "Usage: $(basename $0) start|stop"

        exit 1

        ;;

    esac

开启:

chmod 777 vip_set.sh

./vip_set.sh start

4.配置lvs调度器(两台keep)

4.1两台keepalived安装:

yum install -y ipvsadm keepalived

4.2执行ipvsadm(主和备一致)

ipvsadm

4.3修改配置文件:

keepalived主节点:

vi /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

    notification_email {

        acassen@firewall.loc     #设置报警邮件地址,可以设置多个,每行一个。

        failover@firewall.loc    #需开启本机的sendmail服务

        sysadmin@firewall.loc

    }

    notification_email_from Alexandre.Cassen@firewall.loc  #设置邮件的发送地址

    smtp_server 127.0.0.1      #设置smtp server地址

    smtp_connect_timeout 30    #设置连接smtp server的超时时间

    router_id LVS_DEVEL        #表示运行keepalived服务器的一个标识。发邮件时显示在邮件主题的信息

}

vrrp_instance VI_1 {

    state MASTER              #指定keepalived的角色,MASTER表示此主机是主服务器,BACKUP表示此主机是备用服务器

    interface ens33           #指定HA监测网络的接口

    virtual_router_id 51      #虚拟路由标识,这个标识是一个数字,同一个vrrp实例使用唯一的标识。即同一vrrp_instance下,MASTER和BACKUP必须是一致的

    priority 100              #定义优先级,数字越大,优先级越高,在同一个vrrp_instance下,MASTER的优先级必须大于BACKUP的优先级

    advert_int 1              #设定MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒

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

        auth_type PASS        #设置验证类型,主要有PASS和AH两种

        auth_pass 1111        #设置验证密码,在同一个vrrp_instance下,MASTER与BACKUP必须使用相同的密码才能正常通信

    }

    virtual_ipaddress {       #设置虚拟IP地址,可以设置多个虚拟IP地址,每行一个 必须是同网段

        192.168.100.50

    }

}

virtual_server 192.168.100.50 80 {  #设置虚拟服务器,需要指定虚拟IP地址和服务端口,IP与端口之间用空格隔开

    delay_loop 6              #设置运行情况检查时间,单位是秒

    lb_algo wrr                #设置负载调度算法,这里设置为wrr,即加权轮询算法

    lb_kind DR                #设置LVS实现负载均衡的机制,有NAT、TUN、DR三个模式可选

    nat_mask 255.255.255.0

    persistence_timeout 0    #会话保持时间,单位是秒。这个选项对动态网页是非常有用的,为集群系统中的session共享提供了一个很好的解决方案。

                              #有了这个会话保持功能,用户的请求会被一直分发到某个服务节点,直到超过这个会话的保持时间。

                              #需要注意的是,这个会话保持时间是最大无响应超时时间,也就是说,用户在操作动态页面时,如果50秒内没有执行任何操作

                              #那么接下来的操作会被分发到另外的节点,但是如果用户一直在操作动态页面,则不受50秒的时间限制

    protocol TCP              #指定转发协议类型,有TCP和UDP两种

    real_server 192.168.100.30 80 { #配置服务节点1,需要指定real server的真实IP地址和端口,IP与端口之间用空格隔开

        weight 2              #配置服务节点的权值,权值大小用数字表示,数字越大,权值越高,设置权值大小可以为不同性能的服务器

                              #分配不同的负载,可以为性能高的服务器设置较高的权值,而为性能较低的服务器设置相对较低的权值,这样才能合理地利用和分配系统资源

        TCP_CHECK {           #realserver的状态检测设置部分,单位是秒

            connect_timeout 3    #表示3秒无响应超时

            nb_get_retry 3       #表示重试次数

            delay_before_retry 3 #表示重试间隔

            connect_port 80

        }

    }

    real_server 192.168.100.40 80 {

        weight 1

        TCP_CHECK {

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

            connect_port 80

        }

    }

}

4.4备keepalived节点只需改两处:

state BACKUP              #指定keepalived的角色,MASTER表示此主机是主服务器,BACKUP表示此主机是备用服务器

    priority 80              #定义优先级,数字越大,优先级越高,在同一个vrrp_instance下,MASTER的优先级必须大于BACKUP的优先级

5.开启服务:

systemctl restart keepalived

systemctl enable keepalived

5.1检查vip:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:4b:96:2c brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.10/24 brd 192.168.100.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 192.168.100.50/32 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::5d37:cab0:2f8e:71ff/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

5.2如果错误执行:

echo "net.ipv4.ip_forward = 1">>/etc/sysctl.conf

sysctl -p

5.3统计ipvs:

ipvsadm -Ln

详解:

  1. Forward 转发方式,当前是路由转发
  2. Weight 权重
  3. ActiveConn 当前活跃的连接数
  4. InActConn 当前不活跃的连接数
  1. 验证vip

开启两个web机器的vip

默认vip访问主节点web

关闭nginx主节点后vip访问备节点的nginx

关闭keepalived主节点之后vip飘逸至备节点

开启之后vip又漂移回主节点:

后续可以尝试将keepalived主备节点和nginx主备节点结合

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值