集群
2020-03-12 16:06:14来源:博客园 阅读 ()
集群
Linux集群
使用多台服务器搭建成一个集群来运行应用程序,不仅可以避免单点故障,还能提升服务器的承载能力
集群从功能实现上分为两种:高可用集群和负载均衡集群
高可用集群,当一台服务器宕机不能提供服务时,还有另外的服务器顶替
负载均衡集群,把用户的请求分摊到多台服务器上
搭建高可用集群
高可用集群,即“HA集群”,也称作“双机热备”
常见实现高可用的开源软件有heartbeat和keepalived
keepalived工作原理
VRRP协议,是实现路由高可用的一种通信协议,在这个协议里会将多台功能相同的路由器组成一个小组,这个小组里有一个master主机和n个backup备用机,工作时,master会通过组播的形式向各个backup发送VRRP协议的数据包,当backup收不到master发来的VRRP数据包时,就会认为master宕机了。
keepalived就是采用VRRP协议实现的高可用。keepalived要有三个模块,分别是core、check和vrrp。其中core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析;check模块负责健康检查;vrrp模块用来实现VRRP协议
实现Wed高可用
VIP:虚拟ip,服务器靠这个ip对外提供服务,当master机器宕机时,VIP被分配到backup
安装服务
准备两台机器,一台master,一台backup
在两台机器上安装keepalived和nginx服务
# yum install -y keepalived
# yum install -y epel-release
# yum install -y nginx
配置keepalived文件
编辑master的配置文件
# vi /etc/keepalived/keepalived.conf
global_defs {
notification_email {
kei@keilinux.com //定义接收告警的人}
notification_email_from root@keilinux.com //定义发邮件地址
smtp_server 127.0.0.1 //定义发邮件地址,127.0.0.1为使用本机自带邮件服务器发送
smtp_connect_timeout 30
router_id LVS_DEVEL
} vrrp_script kei_nginx {
script "/usr/local/sbin/check_ng.sh" //自定义脚本,该脚本为监控nginx服务的脚本
interval 3 //每隔3s执行一次该脚本
} vrrp_instance VI_1 {
state MASTER //角色为master interface ens33 //针对哪个网卡监听VIP
virtual_router_id 51
priority 100 //权重为100,master要比backup大
advert_int 1
authentication {
auth_type PASS
auth_pass kei>com //定义自定义密码
}
virtual_ipaddress {
192.168.37.100 //定义VIP
}
track_script {
kei_nginx //定义监控脚本
}
} 退出保存 编辑backup的配置文件 # vi /etc/keepalived/keepalived.conf
global_defs {
notification_email {kei@keilinux.com
}
notification_email_from root@keilinux.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
} vrrp_script kei_nginx {
script "/usr/local/sbin/check_ng.sh"
interval 3
} vrrp_instance VI_1 {
state BACKUP //角色为backup
interface ens33
virtual_router_id 51
priority 90 //比master数值小
advert_int 1
authentication {
auth_type PASS
auth_pass kei>com
}
virtual_ipaddress {
192.168.37.100
} track_script {
kei_nginx
}
} 退出保存
编辑监控脚本(此脚本两台机器配置一样)
定义一个监控nginx服务的脚本 # vi /usr/local/sbin/check_ng.shd=`date --date today +%Y%m%d_%H:%M:%S`
//时间变量,用于记录日志
n=`ps -C nginx --no-heading|wc -l`
计算nginx进程数量if [ $n -eq "0" ]; then
systemctl start nginx
n2=`ps -C nginx --no-heading|wc -l`
if [ $n2 -eq "0" ]; then
echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
systemctl stop keepalived
fi
fi //如果进程为0,则启动nginx,并再次检测进程数量 //如果还为0,说明nginx无法启动,此时需要关闭keepalived
其他配置(两台机器操作)
给脚本权限
# chmod a+x /usr/local/sbin/check_ng.sh
启动keepalived
# systemctl start keepalived
查看状态
在master机器上
查看IP
# ip addr
查看nginx服务进程
# ps aux |grep nginx
验证高可用
先把master上的nginx关掉
# systemctl stop nginx
等3s再次检测端口,发现服务被启动
模拟master宕机
# iptables -I OUTPUT -p vrrp -j DROP
在backup机器上查看是否被设置VIP
原文链接:https://www.cnblogs.com/tui463/p/12450769.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Linux系统如何设置开机自动运行脚本? 2020-06-11
- Linux指令和shell脚本 2020-06-11
- 适合开发者的最佳Linux发行版 2020-06-11
- RAID 1 软件实现(Linux 系统) 2020-06-10
- linux各级目录 2020-06-08
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash