现在的位置: 首页 > 综合 > 正文

Keepalived+Haproxy实现高可用负载综合实验

2020年02月12日 综合 ⁄ 共 4579字 ⁄ 字号 评论关闭
文章目录

Keepalived+Haproxy实现高可用负载综合实验

之前做过一个keepalived+Haproxy实现高可用负载的实验,只是在同一局域网下做的,这次是在之前的基础上加了一个外网,客户机利用DHCP服务获取地址,用DNS服务器用来做域名解析,最后实现外网客户机通过域名访问远端web服务器。如果想了解单独的keepalived+Haproxy的实验可参考https://blog.csdn.net/weixin_42342456/article/details/86356310

实验拓扑:


实验要求:

客户机从DHCP服务器获取IP地址、网关、DNS服务器地址通过DNS服务器将域名解析到keepalived的VIP上keepalived通过haproxy或lvs代理发送给后端完成响应的请求


实验步骤:

1.配置DNS服务器和DHCP服务器

DNS服务器:安装Bind软件

yum -y install bind*

配置DNS正向解析,具体步骤如下:配置主配置文件

vim /etc/named.conf #修改主配置文件中的如下两行listen-on port 53 { any; }; #监听所有地址的53端口allow-query { any; };  #允许所有人请求

编辑区域配置文件

vim /etc/named.rfc1912.zones #向区域配置文件最后面添加如下内容zone "test.com" IN { type master; file "test.com.zone"; allow-transfer { none; };};

编辑数据配置文件

cd /var/named/cp -a named.localhost test.com.zonevim test.com.zone$TTL 1D@ IN SOA test.com. admin.test.com. (200 1H 15M 1W 1D)@ IN NS www.test.com.www IN A 172.16.1.100

重启服务,验证正向解析

systemctl restart namedsystemctl enable named验证:[root@localhost ~]# nslookup> www.test.comServer:172.16.1.10Address:172.16.1.10#53Name:www.test.comAddress: 172.16.1.100

如果域名能被正常解析,就说明DNS服务没有问题了。提示: 如果修改完配置文件后,重启服务无法启动,可使用named-checkconf命令和named-checkzone命令,分别检查主配置文件与数据配置文件中语法或参数的错误。如果想了解更多有关DNS服务的知识,请参考:https://blog.csdn.net/weixin_42342456/article/details/85164189


DHCP服务器:安装DHCP服务

yum -y install dhcp

配置DHCP

vim /etc/dhcp/dhcpd.confddns-update-style none;ignore client-updates;default-lease-time 259200;max-lease-time 518400;option domain-name-servers 172.16.1.10; #DNS服务器地址subnet 172.16.1.0 netmask 255.255.255.0 { #宣告的网段 range 172.16.1.20 172.16.1.101; #范围 option subnet-mask 255.255.255.0; # option routers 172.16.1.2;}

重启DHCP服务

systemctl restart dhcpdsystemctl enable dhcpd

在客户机上验证DHCP服务是否生效在验证之前先将虚拟机的DHCP关掉,如下:验证:客户机已成功获取到DHCP配置中分发范围中的地址,就说明DHCP服务配置已经没有问题了。如果想了解更多有关DHCP服务的内容,请参考:https://blog.csdn.net/weixin_42342456/article/details/85029090


2.配置后端web服务器

web_server1:安装nginx服务

yum -y install epel-release # 安装Nginx源yum -y install nginx #安装Nginx

启动Nginx服务

systemctl start nginx #启动服务systemctl enable nginx #开机自启

创建测试页面

mv /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html_bak #备份原有默认页面vim /usr/share/nginx/html/index.html #新建测试页面This is server 1111111 #测试页面内容

关闭防火墙和selinux(仅是为了方便实验验证,生产环境需要修改策略)

# 临时关闭systemctl stop firewalldsetenforce 0

测试web_sever1 Nginx服务web_server2的配置和web_server1的配置一样,只需将测试页面内容修改一下即可,这儿省去去配置过程,直接上测试结果图。出现上面的测试结果就说明web服务器配置的已经没有问题了。


3.配置前端keepalived+haproxy

安装keepalived和haproxy(在主从服务器上分别安装)

yum -y install keepalivedyum -y install haproxy

启动服务(在主从服务器上执行)

systemctl start keepalivedsystemctl start haproxysystemctl enable keepalivedsystemctl enable haproxy

关闭防火墙和selinux(在主从服务器上执行)

systemctl stop firewalldsetenforce 0


配置keepalived(在主从服务器上配置)主服务器的配置:

mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf_bak # 备份原配置文件vim /etc/keepalived/keepalived.confglobal_defs { router_id LVS_TEST}vrrp_instance VI_1 { state MASTER interface ens37 virtual_router_id 51 priority 101 advert_int 1 authentication { auth_type PASS auth_type 1234 } virtual_ipaddress { 172.16.1.100 }}

从服务器的配置:

mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf_bak # 备份原配置文件vim /etc/keepalived/keepalived.confglobal_defs { router_id LVS_TEST}vrrp_instance VI_1 { state BACKUP interface ens37 virtual_router_id 51 priority 99 advert_int 1 authentication { auth_type PASS auth_type 1234 } virtual_ipaddress { 172.16.1.100 }}

说明: 虚拟IP要设置成ens37网卡同一网段的地址配置完保存后,重启keepalived服务(主从)

systemctl restart keepalived

验证keepalived的配置是否成功在主服务器上没有问题后,关掉主服务器上的keepalived服务,再在从服务器上查看

systemctl stop keepalived

通过查看发现虚拟IP成功的漂到从服务器上了,就说明keepalived服务的配置已经没有问题了。


配置haproxy配置主服务器:

mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg_bak #备份原配置文件vim /etc/haproxy/haproxy.cfgglobal log 127.0.0.1 local3 info chroot /var/lib/haproxy maxconn 4000 user haproxy group haproxy daemondefaults log global mode http option httplog retries 3 timeout connect 5000 timeout client 50000 timeout server 50000listen stats mode http bind 0.0.0.0:8080 stats enable stats uri /stats stats realm HaproxyStatistics stats auth admin:adminlisten nginxserver bind 172.16.1.100:80 #监听虚拟IP mode http default_backend nginxbackend nginx balance roundrobin option httpchk GET /index.html server nginx1 192.168.1.10:80 check inter 2000 rise 3 fall 3 weight 30 server nginx2 192.168.1.20:80 check inter 2000 rise 3 fall 3 weight 30

配置从服务器(有两种方法):方法1:

只需将监听的地址改为bind *:80,如果不设置成监听所有的话,配置完之后,从服务器上的haproxy服务无法启动,这是因为在主服务器keepalived服务运行的情况下,从服务器没有虚拟IP地址,而从服务器上的haproxy不知到这个虚拟IP地址,所以会出现无法启动的情况。

方法二:

将主服务器上haproxy的配置原封不动的复制过来,保存后,先将主服务器的keepalived服务关掉,再启用动从服务器上的haproxy服务,启动成功后,再将主服务器上的keepalived服务启动,这是因为主服务器上的keepalived运行时,从服务器上没有虚拟IP地址,从服务器上的haproxy服务监听的地址它不知道,所以会起不来,必须先让从服务器知道这个地址。)

配置完后,重启服务(主从)

systemctl restart haproxy

验证haproxy服务是否成功通过验证发现可以代理发送给后端完成响应的请求,说明haproxy配置成功了。


实验验证

在以上服务都配置没有问题后,在客户机上验证,如下:为了验证备份的是否成功,关掉主服务器上的keepalived服务,然后再验证:通过使用域名进行验证,发现可以成功的访问到后端web服务器上,就说明整个实验已经没有问题了。

以上就上有关Keepalived+Haproxy实现高可用负载综合实验的全部内容,学步园全面介绍编程技术、操作系统、数据库、web前端技术等内容。

抱歉!评论已关闭.