项目一
文章目录
目录
项目一
文章目录
前言
一、项目概述
二、项目目的
三、操作步骤
1.环境准备
2.创建虚拟机
3.配置网络及修改虚拟机名称
4.配置LVS_keepalived1、LVS_keepalived2
五.配置Nginx1、Nginx2
六.配置Web1、Web2
七.启动LVS_keepalived1和LVS_keepalived2
八.反向配置Nginx1、Nginx1
九.进行验证
总结
前言
个人制作完成 有什么问题大家可以留言
这是在VMware中linux centos7版本中完成
提示:以下是本篇文章正文内容,下面案例可供参考
一、项目概述
使用两台LVS服务器进行负载均衡和故障转移,一台作为Master服务器,另一台作为Backup服务器,两者在负载均衡的配置上是完全一样的,使用Keepalived对两台LVS服务器的状态进行检测,如果在某个时刻,LVS的Master服务器由于故障宕机,Keepalived就会检测到该故障,并且进行故障下线,然后将Backup机器上线提供服务,从而实现故障转移的功能;配置两台Nginx服务器作为反向代理,通过Nginx的反向代理功能把用户的访问请求发送到后端的Web应用服务器上。在正常情况下,客户端通过虚拟IP访问Web应用的时候,LVS会将该请求转发到Master服务器上,然后Master服务器根据配置的负载均衡策略选择后端的Nginx反向代理,再由Nginx的反向代理将请求发送到后台的Web应用服务器上进行处理。
二、项目目的
通过部署Keepalived +LVS+Nginx负载均衡实验掌握负载均衡的作用以及应用场景,熟悉如何搭建和部署企业级的高可用Web应用。
CentOS7部署企业级Web应用,网络拓扑结构如图:
三、操作步骤
1.环境准备
项目最少需要六台虚拟主机,配置如下表:
2.创建虚拟机
创建六台虚拟机,名字分别为LVS_keepalived1;LVS_keepalived2;Nginx1;Nginx2;Web1;Web2
3.配置网络及修改虚拟机名称
启动六台虚拟机
在LVS_keepalived1中输入:
cd /etc/sysconfig/network-scripts/
ls
vi ifcfg-ens32 #每个人的不一样,输入ls查看到的第一个就行
#在vi中输入如下内容;推荐直接使用xshell等工具直接复制粘贴
DEVICE=ens32
IPADDR=192.168.XX.100
NETMASK=255.255.255.0
GATEWAY=192.168.XX.2
DNS1=114.114.114.114
BROADCAST=127.255.255.255
ONBOOT=yes
BOOTPROTO=static
这里最重要的就是IPADDR;192.168.xxx.100 xxx为自己的地址
ifdown ifcfg-ens32
ifup ifcfg-ens32
修改主机名:
hostnamectl set-hostname XXX(主机名)
hostnamectl set-hostname LVS_keepalived1
关闭防火墙:非常重要 后面如果发现错误,首先查看防火墙是否关闭
systemctl stop firewalld
这里当下次重启时,名字就会改变
!!!将其它的5台虚拟机重复上述操作,注意修改ip地址以及hostname为环境准备中的名称和ip地址
4.配置LVS_keepalived1、LVS_keepalived2
在LVS_keepalived1、LVS_keepalived2中执行如下代码
yum -y install ipvsadm keepalived #下载keepalived
ipvsadm
lsmod | grep ip_vs
在LVS_keepalived1中配置keepalived.conf 文件 注意修改其中的ip地址
vi /etc/keepalived/keepalived.conf
#在vi中写入如下内容,其他内容全部删除
! Configuration File for keepalived
global_defs {
lvs_id director1 #指定lvs的id
}
vrrp_instance LVS {
state MASTER #指定当前节点为master节点
interface ens32 #这里是网卡的名称,通过ifconfig或者ip addr可以查看
virtual_router_id 51 #两个节点要一样
priority 151 #数值越大优先级越高,master节点要高于backup节点
advert_int 1 # 指定发送VRRP通告的间隔,单位是秒
authentication {
auth_type PASS # 鉴权,默认通过
auth_pass 123456 # 鉴权访问密码
}
virtual_ipaddress {
192.168.XXX.200 #指定了虚拟ip
}
}
virtual_server 192.168.XXX.200 80 {
delay_loop 1 # 健康检查的时间间隔
lb_algo rr # 负载均衡策略,这里是轮询
lb_kind DR # 调度器类型,这里是DR
persistence_time 1 # 指定了持续将请求打到同一台真实主机的时间长度
protocol TCP # 指定了访问后台真实主机的协议类型
real_server 192.168.XXX.110 80 {
weight 1
TCP_CHECK {
connect_timeout 10 # 指定了进行心跳检查的超时时间
nb_get_retry 3
delay_before_retry 3 # 指定了在尝试之前延迟多长时间
}
}
real_server 192.168.XXX.111 80 {
weight 1
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
}
}
}
在LVS_keepalived2中配置keepalived.conf 文件
注意:在lvskeepalived2也就是backup 机器上面配置keepalived只和master 有以下三处不同
- lvs_id director1 改成 lvs_id director2
- state MASTER 改成 state BACKUP
- priority 151 改成 priority 101
五.配置Nginx1、Nginx2
在虚拟机Nginx1、Nginx2中输入如下命令:
rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum install nginx
systemctl start nginx
systemctl stop firewalld
六.配置Web1、Web2
在Web1下输入如下命令
yum -y install httpd
cd /var/www/html
echo "web1" > index.html
systemctl restart httpd
在Web2下输入如下命令
yum -y install httpd
cd /var/www/html
echo "web2" > index.html
systemctl restart httpd
七.启动LVS_keepalived1和LVS_keepalived2
在lvskeepalived1 和 lvskeepalived2 服务器上启动keepalived.
systemctl start keepalived
systemctl enable keepalived
验证:
ip a | grep -i ens33 #可有看到VIP的地址
ipvsadm -Ln
八.反向配置Nginx1、Nginx1
在Nginx1、Nginx2中输入如下内容
yum -y install net-tools
cd /etc/init.d/
vi sh
#sh中内容为
#!/bin/bash
SNS_VIP=192.168.163.100
. /etc/rc.d/init.d/functions
case "$1" in
start)
ifconfig lo:0 $SNS_VIP netmask 255.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/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 Stoped"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0
systemctl restart nginx
systemctl status nginx.service
chmod 755 sh
./sh start
九.进行验证
1、打开电脑浏览器,分别输入Web1和Web2、Nginx1和Nginx2的IP地址,查看是否能够访问。
2、打开LVS_keepalived1、LVS_keepalived2
- 输入systemctl restart keepalived
- 输入systemctl stop firewalld
3、打开浏览器访问虚拟IP地址(192.168.xxx.200),查看是否与Nginx1和Nginx2访问页面一致.
总结
项目的难点包括:
①在LVS的DR模式中对ARP协议的理解;
②在Nginx中设置禁止ARP回应和直接把回应返回给客户端;
③VIP地址与Nginx中的lo地址进行绑定并添加到路由表中。