公有ip地址有个组织统一分配,你需要去买,私有ip地址可以自己分配
设置本地私有ip
$ sudo ifconfig eth1 10.0.0.1/24
$ sudo ifconfig eth1 up
虚拟IP即VIP,这只是一个概念而已,可能会误导你,实际上就是heartbeat临时绑定在物理网卡上的别名(heartbeat3以上也采用了辅助IP),如eth0:x ,x为0-255的任意数字,你可以在一块网卡上绑定多个别名。这个VIP可以看作是你上网的QQ网名、昵称、外号等。 在实际生产环境中,需要在DNS配置中把网站域名地址解析到这个VIP地址,由这个VIP对用户提供服务。如:把www.zhangcong.top解析到VIP 1.1.1.1 上。
由Linux系统的 ifconfig 命令来创建和维护
由Linux系统的ip命令创建和维护
heartbeat3 版本起,不再使用别名,而是使用辅助IP提供服务,而 keepalived 软件一直都是使用的辅助IP技术
1,ifconfig查看当前活动网卡。如:eth0
2,执行
ifconfig eth0:0 166.111.69.100 netmask 255.255.255.0 up
进行vip添加
3,执行ifconfig查看是否生效
4,测试 ping 166.111.69.100
5,写在/etc/rc.local里进行开机自动设置
设置/etc/keepalived/keepalived.conf
global_defs {
notification_email {
saltstack@163.com
}
notification_email_from dba@dbserver.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id MySQL-HA
}
vrrp_instance VI_1 {
state BACKUP
interface eth1
virtual_router_id 51
priority 150
advert_int 1
nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.0.88
}
}
采用的是ip addr add 192.168.40.20/24 dev eth0 增加vip
lvs和haproxy都是实现的负载均衡的作用,keepalived和heartbeat都是提高高可用性的,避免单点故障
实现HA的方式,一般采用两台机器同时完成一项功能,比如数据库服务器,平常只有一台机器对外提供服务,另一台机器作为热备,当这台机器出现故障时,自动动态切换到另一台热备的机器。
心跳,采用定时发送一个数据包,如果机器多长时间没响应,就认为是发生故障,自动切换到热备的机器上去。
虚IP。何为虚IP那,就是一个未分配给真实主机的IP,也就是说对外提供数据库服务器的主机除了有一个真实IP外还有一个虚IP,使用这两个IP中的 任意一个都可以连接到这台主机,所有项目中数据库链接一项配置的都是这个虚IP,当服务器发生故障无法对外提供服务时,动态将这个虚IP切换到备用主机。
服务器架构中,经常会遇到服务的一个总入口(比如 Nginx/MyCAT)存在单点故障的隐患。Keepalived 正是解决此类问题的高可用软件,它使用单个虚拟IP(VIP),动态检测多个入口节点的可用性并切换 VIP 指向,从而达到高可用
Keepalived是C语言开源的免费路由软件,为 Linux 提供高可用的负载均衡功能:
高可用(HA, High Availability):提供健康检查功能,基于 VRRP(Virtual RouterRedundancy Protocol) 协议实现多台机器间的故障转移服务;
负载均衡(LB, Load Balancing):基于 Linux 虚拟服务器(IPVS)内核模块,提供 Layer4 负载均衡。
Keepalived软件主要是通过VRRP协议实现高可用功能的。VRRP是Virtual Router RedundancyProtocol(虚拟路由器冗余协议)的缩写,VRRP出现的目的就是为了解决静态路由单点故障问题的,它能够保证当个别节点宕机时,整个网络可以不间断地运行
Keepalived高可用服务对之间的故障切换转移,是通过 VRRP (Virtual Router Redundancy Protocol ,虚拟路由器冗余协议)来实现的。
在 Keepalived服务正常工作时,主 Master节点会不断地向备节点发送(多播的方式)心跳消息,用以告诉备Backup节点自己还活看,当主 Master节点发生故障时,就无法发送心跳消息,备节点也就因此无法继续检测到来自主 Master节点的心跳了,于是调用自身的接管程序,接管主Master节点的 IP资源及服务。而当主 Master节点恢复时,备Backup节点又会释放主节点故障时自身接管的IP资源及服务,恢复到原来的备用角色。
Keepalived 分为3个守护进程:
父进程: 很简单,负责 fork 子进程,并监视子进程健康(图中 WatchDog 周期性发送检测包,需要的话重启子进程); 子进程A: 负责VRRP框架(图中 VRRP Stack) 子进程B: 负责健康检查(图中 Checkers)
VRRP ,全 称 Virtual Router Redundancy Protocol ,中文名为虚拟路由冗余协议 ,VRRP的出现就是为了解决静态踣甶的单点故障问题,VRRP是通过一种竞选机制来将路由的任务交给某台VRRP路由器的。
以检测web服务器为例,Keepalived从3个层次来检测服务器的状态
(1)IP层
看网络是否正常
Keepalived定期ping目标服务器,如果此IP地址没有激活,Keepalived便报告这台服务器失效,进行移除
(2)TCP层
看web服务器端口是否正常
例如一般web服务的端口为80,Keepalived定期查看80端口,如果没有启动,报告失效
(3)应用层
看应用程序是否正常
Keepalived将根据用户的设定,检查服务器程序的运行是否正常,如果与用户的设定不相符,则Keepalived将把服务器从服务器群中剔除
假设有两台 CentOS: IP[1]=192.168.126.101 和 IP[2]=192.168.126.102 两台都安装 Nginx,分别作为 Master / Backup,同时指定 VIP(虚拟IP) 为 192.168.126.100 则客户端可通过 192.168.126.100 高可用地访问两个 Nginx
sudo yum -y install keepalived
#!/bin/bash
## sudo vim /etc/keepalived/nginx_check.sh
## sudo chmod +x /etc/keepalived/nginx_check.sh
NGINX_COUNT=`ps -C nginx --no-header | wc -l`
if [ $NGINX_COUNT -eq 0 ]; then
sudo systemctl stop keepalived
fi
## sudo cp /etc/keepalived/keepalived.conf{,.bak}
## sudo vim /etc/keepalived/keepalived.conf
global_defs {
router_id HOSTNAME ## 本节点标识,可使用主机名(centos1/centos2)
}
vrrp_script nginx_check { ## 定义检测脚本,设定名称
script "/etc/keepalived/nginx_check.sh" ## 检测脚本的路径
interval 1 ## 重复执行脚本的时间间隔(s)
weight -20 ## 每失败一次,当前 VRRP 节点的优先级就下降 20
}
vrrp_instance VRRP_100 { ## VRRP_100 是 VRRP 的实例名称
state BACKUP ## 状态: 两台节点都用 BACKUP。支持两种:MASTER(主节点,优先使用)/BACKUP(备节点,主节点失效时才自动转换为MASTER,主节点恢复后会主动让位)
interface ens33 ## VIP绑定的网卡接口名称,使用命令 ifconfig 查看
virtual_router_id 100 ## 虚拟路由的ID,各节点必须一样,可以取 VIP 的末段
priority 100 ## 节点优先级(0~255),MASTER高于BACKUP
advert_int 1 ## 发送组播时间间隔(s),两个节点必须一样
nopreempt ## 非抢占模式
## 验证信息,两个节点必须一样
authentication {
auth_type PASS
auth_pass 1111
}
## VIP(可以多个,每行一个,不要分隔符),两个节点必须一样
virtual_ipaddress {
192.168.126.100
}
## 定时检测 nginx 状态
track_script {
nginx_check ## 前面的 vrrp_script 中设定
}
}
节点类型全部是 BACKUP, BACKUP-1 故障时,BACKUP-2 会抢占 VIP, BACKUP-1 从故障中恢复后,不会从 BACKUP-2 抢回 VIP。 优点:故障恢复时,可避免 VIP 切换造成的服务延迟。
配置要点:
vrrp_instance VRRP_100 {
state BACKUP ## 各节点类型都是 BACKUP
nopreempt ## 非抢占(preempt 意思是抢占)
}
节点类型分别 MASTER/BACKUP, MASTER 故障时,BACKUP 会抢占 VIP, MASTER 从故障中恢复后,会从 BACKUP 抢回 VIP。
配置要点:
vrrp_instance VRRP_100 {
state MASTER|BACKUP ## 节点类型分为 MASTER/BACKUP
## 不要指定 nopreempt(默认为抢占)
}
https://blog.csdn.net/chengxuyuanyonghu/article/details/83539966
https://www.cnblogs.com/clsn/p/8052649.html
https://blog.csdn.net/kefengwang/article/details/81430712