文章目录
一、安装Nginx及Tomcat
也可以使用yum安装,因为这里不需要Nginx太多的功能操作
1、Nginx安装部署详解
2、Tomcat部署与介绍
二、Keepalived+Nginx
1、准备环境
IP | 主机名 |
---|---|
192.168.202.130 | keepalived-master |
192.168.202.131 | keepalived-backup |
192.168.202.132 | nginx-server1 |
192.168.202.133 | nginx-server2 |
#四台机器分别装上epel源和nginx
yum -y install epel-release
yum -y install nginx
#在keepalived的master机器上和backup机器上安装keepalived
yum -y install keepalived
配置keepalived两台机器的nginx负载
/etc/nginx/nginx.conf
文件
2、Nginx配置
#keepalived两台机器上的nginx负载均衡配置
[xiaobai@keepalived-master] cd /etc/nginx/conf.d/
[xiaobai@keepalived-master] vim proxy.conf
upstream xiaobai {
server 192.168.202.132:80 weight=1 max_fails=2 fail_timeout=2;
server 192.168.202.133:80 weight=1 max_fails=2 fail_timeout=2;
}
server {
listen 80;
server_name localhost;
access_log /var/log/nginx/host.access.log main;
location / {
proxy_pass http://xiaobai;
proxy_redirect default;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
#保存并退出
[xiaobai@keepalived-master] systemctl start nginx
[xiaobai@keepalived-master] systemctl enable nginx
#keepalived-backup机器也要有同样的配置
3、keepalived配置
#两台keepalived机器都要配置,有些地方需要改
[xiaobai@keepalived-master] cd /etc/keepalived
[xiaobai@keepalived-master] mv keepalived.conf keepalived.conf.bak
[xiaobai@keepalived-master] vim keepalived.conf
! Configuration File for keepalived #没有实际意义
global_defs {
router_id directory1 #backup机器上应该改为directory2
}
vrrp_instance VI_1 {
state MASTER #master为主,backup为备,backup机器上要改
interface ens33 #VIP的绑定接口
#master机器上不需要,backup机器上需要加上nopreempt,不抢占VIP
virtual_router_id 80 #整个集群的id,backup机器也应该保持一致
priority 100 #优先级,backup机器改为50
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.202.26/24
}
}
#保存并退出,去backup机器上配置keepalived的配置文件
[xiaobai@keepalived-master] systemctl start keepalived
[xiaobai@keepalived-master] systemctl enable keepalived
#两台机器启动服务并开机自启
[xiaobai@keepalived-master] ip a add dev ens33 192.168.202.26/24
4、测试
打开浏览器访问VIP地址192.168.202.26
刷新后
nginx的负载均衡没有问题,现在将master机器的keepalived关闭,测试高可用
关闭前VIP192.168.202.26还存在,关闭keepalived服务后再次查看ip,并没有192.168.202.26,切换到backup查看ip
接下来难度提升
二、Lvs+Keepalived多实例高可用负载均衡
1、准备环境
IP | 主机名 |
---|---|
10.8.156.10 | keep-master |
10.8.156.29 | keep-slave |
10.8.156.12 | tomcat1 |
10.8.156.34 | tomcat2 |
10.8.156.30 | nginx1 |
10.8.156.35 | nginx2 |
2、keepalived配置
2.1、Keepalived高可用部署配置
#master和slave机器同时操作
[xiaobai@keep-master] yum -y install keepalived
[xiaobai@keep-master] mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
master上单独操作
#master上操作
[xiaobai@keep-master] vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived #没有实际意义
global_defs {
router_id directory1 #backup机器上应该改为directory2
}
#实例1
vrrp_instance VI_1 {
state MASTER #master为主,backup为备,backup机器上要改
interface ens33 #VIP的绑定接口
#master机器上不需要,backup机器上需要加上nopreempt,不抢占VIP
virtual_router_id 80 #整个集群的id,backup机器也应该保持一致
priority 100 #优先级,backup机器改为50
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.8.156.200/24
}
}
#实例2
vrrp_instance VI_2 {
state MASTER #第二个实例的master
interface ens33
virtual_router_id 81 #这是第二个实例的master,id要和第一个不一样
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.8.156.201/24
}
}
slave上单独操作
#slave上操作
[xiaobai@keep-slave] vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id directory2
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 80
priority 50
advert_int 1
nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.91.80/24
}
}
vrrp_instance VI_2 {
state BACKUP
interface ens33
virtual_router_id 81
priority 50
advert_int 1
nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.91.81/24
}
}
2.2、启动keepalived
#回到master
[xiaobai@keep-master] systemctl start keepalived
[xiaobai@keep-master] systemctl enable keepalived
[xiaobai@keep-master] ip a
#会自动生成两个自己定义的vip
inet 10.8.156.200/24 scope global secondary ens33
valid_lft forever preferred_lft forever
inet 10.8.156.201/24 scope global secondary ens33
valid_lft forever preferred_lft forever
keepalived高可用配置基本完成
2、Lvs负载均衡配置
#master和slave都操作
[xiaobai@keep-master] vim /etc/keepalived/keepalived.conf
#第一个实例
virtual_server 10.8.156.200 8080 {
delay_loop 3
lb_algo rr
lb_kind DR
protocol TCP
sorry_server 127.0.0.1 8080
real_server 10.8.156.12 8080 {
weight 1
TCP_CHECK {
connect_timeout 3
retry 3
delay_before_retry 3
}
}
real_server 10.8.156.34 8080 {
weight 1
TCP_CHECK {
connect_timeout 3
retry 3
delay_before_retry 3
}
}
}
#第二个实例
virtual_server 10.8.156.201 80 {
delay_loop 3
lb_algo rr
lb_kind DR
protocol TCP
sorry_server 127.0.0.1 80
real_server 10.8.156.30 80 {
weight 1
TCP_CHECK {
connect_timeout 3
retry 3
delay_before_retry 3
}
}
real_server 10.8.156.35 80 {
weight 1
TCP_CHECK {
connect_timeout 3
retry 3
delay_before_retry 3
}
}
}
web端部署
#两台tomcat都操作
[xiaobai@tomcat1] mv /data/application/tomcat/webapps/ROOT/index.jsp /data/application/tomcat/webapps/ROOT/index.jsp.bak
[xiaobai@tomcat1] vim /data/application/tomcat/webapps/ROOT/index.jsp
#文件中写入本机ip
#启动tomcat
[xiaobai@tomcat1] /data/application/tomcat/bin/startup.sh
tomcat可以正常访问
#两台nginx都操作
#将`/etc/nginx/nginx.conf`里的server注释掉
[xiaobai@nginx1] vim /etc/nginx/conf.d/ng.conf
server {
listen 80;
location / {
root /var/www/nginx/;
index index.html index.htm;
}
}
[xiaobai@nginx1] mkdir -p /var/www/nginx
[xiaobai@nginx1] vim /var/www/nginx/index.html
#写入本机ip
[xiaobai@nginx1] systemctl start nginx
nginx也可以正常访问
#两台tomcat上配置
[xiaobai@tomcat1] echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
[xiaobai@tomcat1] echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
[xiaobai@tomcat1] echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
[xiaobai@tomcat1] echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
[xiaobai@tomcat1] ifconfig ens33:0 10.8.156.200 broadcast 10.8.156.200 netmask 255.255.255.255 up
[xiaobai@tomcat1] route add -host 10.8.156.200 dev ens33:0
#两台nginx上配置
[xiaobai@nginx1] echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
[xiaobai@nginx1] echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
[xiaobai@nginx1] echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
[xiaobai@nginx1] echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
[xiaobai@nginx1] ifconfig ens33:0 10.8.156.201 broadcast 10.8.156.201 netmask 255.255.255.255 up
[xiaobai@nginx1] route add -host 10.8.156.201 dev ens33:0
3、测试
访问10.8.156.200的IP
可以跳转,再试试10.8.156.201
也可以正常跳转,现在模拟一下主服务器10.8.156.10机器宕机或服务掉了的场景
#在master机器上执行
[xiaobai@keep-master] systemctl stop keepalived
[xiaobai@keep-master] ip a
#已经没有vip了
#到slave机器上查看
[xiaobai@keep-slave] ip a
inet 10.8.156.200/24 scope global secondary ens33
valid_lft forever preferred_lft forever
inet 10.8.156.201/24 scope global secondary ens33
valid_lft forever preferred_lft forever
浏览器看看能不能继续正常访问
tomcat
nginx
vip漂移到了slave机器上也是可以正常访问,这里多实例keepalived+lvs负载均衡就部署好了