前言
环境还是前面的环境,不断扩大加深,大佬有补充的可以私聊小弟,向您学习!今天主要写keepalived高可用和简单配置一下4层负载均衡
实验环境:
lb1的相关配置请参考:https://blog.csdn.net/weixin_43815140/article/details/105307716
这篇就不解释lb1了,直接拿过来用了。
服务器 | 用途作用 |
---|---|
nginx,php(192.168.10.5) | 做web2节点服务器 ,做web2的php服务器 |
nginx,mysql(192.168.10.6) | 做web节点服务器,做web2的数据库 |
nginx(192.168.10.2) | 做反向代理负载均衡服务器(lb1) |
mysql(192.168.10.4) | 做web1的数据库 |
php(192.168.10.3) | 做web1的php服务器 |
nginx(192.168.10.7) | 做反向代理负载均衡服务器(lb2) |
测试机(192.168.10.1) | 测试访问 |
简单总结了一下四、七层负载均衡的区别:
4层负载是基于ip tcp/udp 端口号
等划分
7层负载时基于HTTP https ftp SMTP
等协议划分
现在很多高并发的网站仅依靠七层负载均衡已经处理的不是很理想,特别消耗资源等缺点,就开始延伸到四层负载均衡做进一细致的划分,可以应用到ip,tcp/udp以及常见的端口号。
目的:配置4层负载均衡,发布内部服务器的ssh和mysql
编辑lb1负载均衡器的主配置文件,添加stream模块,vim /etc/nginx/nginx.conf
插入数据到http字段上方:
stream {
upstream ssh {
server 192.168.10.5:22;
}
upstream mysql {
server 192.168.10.6:3306;
}
server {
listen 5555; #监听映射端口
proxy_pass ssh; #代理转发给ssh群集
proxy_connect_timeout 30; #代理和后端服务器连接超时时间
proxy_timeout 60; #代理等待后端服务器的响应时间
}
server {
listen 7777;
proxy_pass mysql;
proxy_connect_timeout 30;
proxy_timeout 60;
}
}
使用xshell连接测试
[E:\~]$ ssh [email protected] 5555
Connecting to 192.168.10.2:5555...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
WARNING! The remote SSH server rejected X11 forwarding request.
Last failed login: Thu Apr 9 23:41:21 CST 2020 from 192.168.10.2 on ssh:notty
There was 1 failed login attempt since the last successful login.
Last login: Thu Apr 9 22:21:32 2020
[root@web2 ~]#
连接mysql,xshell不能去连接mysql,使用专门连接数据库的工具Navicat
使用keepalived搭建高可用
高可用? 简单说,增加容错性
协议:VRRP(虚拟路由冗余协议) 公有协议
HSRP(热备份路由协议) 私有协议,Cisco公司
高可用软件:
keepalived: 使用vrrp实现多台主机高可用群集
高可用角色:master
主服务器,backup
备服务器
目的:实现两台负载均衡器的高可用
环境:两台负载均衡器:lb1 lb2
lb1和lb2安装keepalived
[root@lb1 ~]# yum -y install keepalived
[root@lb2 ~]# yum -y install keepalived
启动服务:systemctl start keepalived
lb1做master,主服务器配置
vim /etc/keepalived/keepalived.conf
修改为:
global_defs {
router_id lb1 //本路由器(服务器)的名称
}
vrrp_instance VI_1 { //定义VRRP热备实例
state MASTER //热备状态, MASTER表示主服务器
interface ens33 //承载VIP地址的物理接口
virtual_router_id 51 //虚拟路由器的ID号,每个热备组保持一致
priority 100 //优先级,数值越大优先级越高
advert_int 1 //通告间隔秒数(心跳频率)
authentication { //认证信息,每个热备组保持一致
auth_type //认证类型
auth_pass 1111 //密码字串
}
virtual_ipaddress {
192.168.10.100/24 //指定漂移地址(VIP),可以有多个
}
}
保存退出,重启服务 systemctl restart keepalived
lb2做backup,备份服务器配置,为了省事,scp过去修改一下
[root@lb2 ~]# scp root@192.168.10.2:/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
修改:
router_id lb1 ==> router_id lb2
state MASTER ==> state BACKUP
priority 100 ==> priority 99
保存退出,重启服务,systemctl restart keepalived
查看虚拟ip(漂移ip地址)
漂移地址会在lb1上,lb2位备份。只要lb1故障,就会自动飘到lb2上
[root@lb1 ~]# ip addr show dev ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:70:8f:23 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.2/24 brd 192.168.10.255 scope global ens33
valid_lft forever preferred_lft forever
inet 192.168.10.100/24 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::239c:c1af:44eb:612b/64 scope link
valid_lft forever preferred_lft forever
[root@lb1 ~]#
lb2如下:
[root@lb2 ~]# ip addr show dev ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:fd:9f:7a brd ff:ff:ff:ff:ff:ff
inet 192.168.10.7/24 brd 192.168.10.255 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::98ea:c01:c77f:b852/64 scope link
valid_lft forever preferred_lft forever
在lb1上关闭keepalived,在查看VIP。
[root@lb2 ~]# ip addr show dev ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:fd:9f:7a brd ff:ff:ff:ff:ff:ff
inet 192.168.10.7/24 brd 192.168.10.255 scope global ens33
valid_lft forever preferred_lft forever
inet 192.168.10.100/24 scope global secondary ens33
valid_lft forever preferred_lft forever
inet6 fe80::98ea:c01:c77f:b852/64 scope link
valid_lft forever preferred_lft forever
[root@lb2 ~]#
客户机192.168.10.1 ping blog.benet.com时,使lb1停止,观察
访问网站正常而且和web2是负载均衡的
keepalived高可用,高冗余性已经试验完成。