博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LVS(DR)+Keepalived 高可用集群搭建
阅读量:6310 次
发布时间:2019-06-22

本文共 3648 字,大约阅读时间需要 12 分钟。

一、 简介

(1)、LVS简介

LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 用现在的观点来看就是个4层(传输层tcp/udp)的负责均衡器。 它是一个由章文嵩博士发起的自由软件项目,现在LVS已经是 Linux标准内核的一部分,在Linux2.4内核以前,使用LVS时必须要重新编译内核以支持LVS功能模块,但是从Linux2.4内核以后,已经完全内置了LVS的各个功能模块,无需给内核打任何补丁,可以直接使用LVS提供的各种功能。

LVS目前有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR);十种调度算法(rrr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq)。

官方地址:

(2)、Keepalived简介

Keepalived是一个用C语言编写的路由软件。该项目的主要目标是为Linux系统和基于Linux的基础架构提供简单而强大的负载均衡和高可用性设施。

二、 实验环境

(1) 该测试为LVS(DR模式)+Keepalived+Web(Nginx)HA/LB架构

LVS(DR)+Keepalived 高可用集群搭建

(2) 测试服务器如下:

序号 IP 名称 安装软件
1 192.168.100.51 LVS(主) Centos 7.3 Keepalived ipvsadm
2 192.168.100.52 LVS(备) Centos 7.3 Keepalived ipvsadm
3 192.168.100.53 Web(主) Centos 7.3 Nginx
4 192.168.100.54 Web(备) Centos 7.3 Nginx
5 192.168.100.50 VIP
6 192.168.100.127 测试PC(Windows 10)

备注:测试已关闭防火墙及selinux

三、 实验

(1) 安装ipvsadm、keepalived(以下操作在LVS(主)、LVS(备)上操作):

# yum install –y ipvsadm keepalived# vi /etc/keepalived/keepalived.conf  #修改配置文件

(2) 配置LVS(以下操作在LVS(主)、LVS(备)上操作):

[root@t1 ~]# vi /etc/sysctl.conf#打开转发net.ipv4.ip_forward =0 -> net.ipv4.ip_forward=1#让配置生效[root@t1 ~]# sysctl –p

(3) 配置keepalived以下操作在LVS(主)、LVS(备)上操作):

[root@t1 ~]# vi /etc/keepalived/keepalived.conf! Configuration File for keepalivedglobal_defs {   notification_email {     test@firewall.loc   }   notification_email_from Alexandre.Cassen@firewall.loc   smtp_server 192.168.100.49       #因未配置smtp,这里没配置   smtp_connect_timeout 30   router_id LVS_DEVEL   vrrp_skip_check_adv_addr  #vrrp_strict               #若ping不同vip,可以注释改项   vrrp_garp_interval 0   vrrp_gna_interval 0}vrrp_instance VI_1 {    state MASTER      #LVS(主)为MASTER,LVS(备)为BACKUP    interface ens33   #物理网卡名称    virtual_router_id 51   #主备需一致    priority 150           # 优先级,主大于备    advert_int 1           #心跳频率    authentication {       #主备一致        auth_type PASS        auth_pass 1111    }    virtual_ipaddress {        192.168.100.50/32 dev ens33    #虚拟VIP    }}virtual_server 192.168.100.50 80 {    delay_loop 6      # 健康检查间隔时间(秒)    lb_algo rr        # 调度算法(rr,轮询)    lb_kind DR        # DR模式    persistence_timeout 50   #连接保持时间(秒)    protocol TCP    real_server 192.168.100.53 80 {       #web1服务器ip 端口        weight 1    TCP_CHECK {            connect_port    80            connect_timeout 3            nb_get_retry 3            delay_before_retry 3        }    }    real_server 192.168.100.54 80 {        weight 1    TCP_CHECK {            connect_port    80            connect_timeout 3            nb_get_retry 3            delay_before_retry 3        }    }}

#配置完主从后启动keepalived

[root@t1 ~]# systemctl start keepalived.service

#测试,在LVS主上可以看到vip

[root@t1 ~]# ip addr|grep ens33

LVS(DR)+Keepalived 高可用集群搭建

[root@t1 ~]# ipvsadm –L

LVS(DR)+Keepalived 高可用集群搭建

#若停止LVS(主),可以查看到自动漂移至LVS(从)

(4) 配置Web服务器(以下操作在Web(主)、Web(从)上操作):

#安装nginx

[root@t3 ~]# yum install g++ gcc openssl openssl-devel pcre pcre-devel zlib-devel –y[root@t3 ~]# wget http://nginx.org/download/nginx-1.14.2.tar.gz[root@t3 ~]# tar zxvf nginx-1.14.2.tar.gz[root@t3 ~]# cd nginx-1.14.2/[root@t3 ~]# ./configure[root@t3 ~]# make[root@t3 ~]# make install

#为方便测试,web(主)添加web1,web(备)添加web2

[root@t3 ~]# echo "hello,web1" > /usr/local/nginx/html/test.html[root@t3 ~]# /usr/local/nginx/sbin/nginx

#配置web服务器,禁用Arp对虚拟IP的响应

[root@t3 ~]# vim /etc/sysctl.confnet.ipv4.conf.ens33.arp_ignore=1net.ipv4.conf.ens33.arp_announce=2net.ipv4.conf.all.arp_ignore=1net.ipv4.conf.all.arp_announce=2

#配置web服务器,

[root@t3 ~]# ifconfig lo:0 192.168.100.50 netmask 255.255.255.255 broadcast 192.168.100.50 up[root@t3 ~]# route add -host 192.168.100.50 dev lo:0

(5) 测试

1、在pc上,游览器访问http://192.168.100.50/test.html

显示,“hello,web1”;间隔50秒后(之前设置的连接时间)再次访问显示,“hello,web2”。

2、关闭web1上的nginx,访问显示,“hello,web2”

这里就不贴图了~

参考:

转载于:https://blog.51cto.com/bilibili/2340219

你可能感兴趣的文章
Oracle序列
查看>>
xcodebuild命令行编译错误问题解决
查看>>
Yii2.0 下的 load() 方法的使用
查看>>
华为畅玩5 (CUN-AL00) 刷入第三方twrp Recovery 及 root
查看>>
LeetCode----67. Add Binary(java)
查看>>
母版页 MasterPage
查看>>
[转] ReactNative Animated动画详解
查看>>
DNS原理及其解析过程
查看>>
记录自写AFNetWorking封装类
查看>>
没想到cnblog也有月经贴,其实C#值不值钱不重要。
查看>>
【转】LUA内存分析
查看>>
springboot使用schedule定时任务
查看>>
[转] Entity Framework Query Samples for PostgreSQL
查看>>
XDUOJ 1115
查看>>
PHP学习(四)---PHP与数据库MySql
查看>>
模版方法模式--实现的capp流程创建与管理
查看>>
软件需求分析的重要性
查看>>
eclipse的scala环境搭建
查看>>
UVA465:Overflow
查看>>
HTML5-placeholder属性
查看>>