centos实现三个节点高可用
centos实现三个节点高可用
使用的资源为keepalived和nginx
高可用主机IP地址
192.168.136.131
192.168.136.133
192.168.136.134
nginx负载均衡配置
192.168.136.131
192.168.136.133
192.168.136.134
三台主机的80端口对应
192.168.136.131:8080
192.168.136.131:8083
192.168.136.134:8080
192.168.136.134:8084
192.168.136.133:8080
192.168.136.133:8081
nginx的Web服务器
192.168.136.131的8080、8083
192.168.136.134的8080、8084
192.168.136.133的8080、8081
1、每个节点安装nginx和安装keepalived
1.1 安装nginx 1.16.1 ,参考
https://www.cnblogs.com/programer-xinmu78/p/11791486.html
1.2 安装keepalived
yum -y install keepalived
启动keepalived
systemctl start keepalived
systemctl enable keepalived
2、修改keepalived配置
2.1 修改master节点的/etc/keepalived/keepalived.conf配置文件信息
! Configuration File for keepalived
vrrp_script check_nginx_alive {
script "/usr/bin/check_nginx_alive.sh"
interval 3
weight -10
}
global_defs {
router_id lbs_nginx
}
vrrp_instance VI_1 {
state MASTER
interface ens32
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.136.125
}
track_script {
check_nginx_alive
}
}
virtual_server 192.168.136.125 80 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
}
2.2 增加master节点的 执行脚本 /usr/bin/check_nginx_alive.sh,无论主节点还是备节点都需要增加该文件
/usr/bin/check_nginx_alive.sh
#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ]
then
echo 'nginx server is died'
killall keepalived
fi
2.3 修改backup节点的/etc/keepalived/keepalived.conf配置文件信息
注意,不同的备节点的优先级不一样, priority 20
! Configuration File for keepalived
vrrp_script check_nginx_alive {
script "/usr/bin/check_nginx_alive.sh"
interval 3
weight -10
}
global_defs {
router_id lbs_nginx
}
vrrp_instance VI_1 {
state BACKUP
interface ens32
virtual_router_id 51
priority 20
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.136.125
}
track_script {
check_nginx_alive
}
}
virtual_server 192.168.136.125 80 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
}
3、 增加nginx的配置,
3.1 修改nginx的配置文件如下
default.conf 8080端口
default_8084.conf 8084端口
default_lbs.conf 负载均衡配置
server {
listen 8080;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
3.2 负载均衡端口配置,负载均很名字和要一致,这里是nginx_lbs
upstream nginx_lbs {
server 192.168.136.131:8080 weight=1;
server 192.168.136.131:8083 weight=1;
server 192.168.136.134:8080 weight=1;
server 192.168.136.134:8084 weight=1;
server 192.168.136.133:8080 weight=2;
server 192.168.136.133:8081 weight=2;
}
server {
listen 80;
server_name localhost;
client_max_body_size 50m;
client_body_buffer_size 256k;
location / {
proxy_pass http://nginx_lbs;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
}
}
4、启动keepalived
4.1 确认nginx的keepalived是否开放
经过查看可以看到131和134的 nginx.conf中的 keepalive_timeout 65;,相当于打开了keepalive
4.2 启动keepalived
启动Master 192.168.136.131和Backup 192.168.136.134 和 Backup 192.168.136.133的 Keepalived节点
systemctl start keepalived
5、查看keepaliced是否已经放开
ip addr 看到地址中是否有浮动地址
http://192.168.136.125可以正常访问了,可以将每个网站下的index.html文件增加相应标识
6、异常情况查看
6.1 每台主机只能访问本主机所有网站和其他主机个别网站,后来发现原因为,防火墙未打开
修改iptables后正常,
命令为:
vim /etc/sysconfig/iptables
添加8080和8083端口
-A INPUT -m state –state NEW -m tcp -p tcp –dport 8080 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 8083 -j ACCEPT
启动IPTABLES
systemctl enable iptables.service
systemctl start iptables.service
#重启防火墙使配置文件生效
systemctl restart iptables.service
6.2 怎么确认目前的通信信息正常
查看网卡接收的信息
安装tcpdump
yum install -y tcpdump
查看端口vrrp信息
tcpdump -i ens32 vrrp -n
正常情况下,只有一个IP会出现在信息中
6.3 查看keepalived的运行日志
tail -f /var/log/messages
6.4 tcpdump命令看到多个IP的信息,并且主备keepalived服务器上的虚拟IP都增加上了
经过核实原因keepalived需要单独的端口进行通信,目前使用112
通过iptables增加后正常
-A INPUT -p 112 -j ACCEPT
6.5 /etc/keepalived/keepalived.conf 设置中不能增加real_server这个参数,增加real_server后报错,估计目前使用广播和组播进行确认,不需要设置具体的IP地址
估计是哪个版本开始就不用设置了或者换了参数了
centos实现三个节点高可用的更多相关文章
- 用Kolla在阿里云部署10节点高可用OpenStack
为展现 Kolla 的真正实力,我在阿里云使用 Ansible 自动创建 10 台虚机,部署一套多节点高可用 OpenStack 集群! 前言 上次 Kolla 已经表示了要打 10 个的愿望,这次我 ...
- Rancher安装多节点高可用(HA)
Rancher版本:Rancher v1.0.1 基本配置需求 多节点的HA配置请参照单节点需求 节点需要开放的端口 全局访问:TCP 端口22,80,443,18080(可选:用于在集群启动前 查看 ...
- Centos7.5基于MySQL5.7的 InnoDB Cluster 多节点高可用集群环境部署记录
一. MySQL InnoDB Cluster 介绍MySQL的高可用架构无论是社区还是官方,一直在技术上进行探索,这么多年提出了多种解决方案,比如MMM, MHA, NDB Cluster, G ...
- centos 7 Atlas keepalived 实现高可用 MySQL 5.7 MHA环境读写分离
目录 简介 相关链接 环境准备 Atlas 环境 MySQL 集群环境 Atlas 安装 和 配置 为数据库的密码加密 修改配置文件 启动 Keepalived 安装配置 安装 master 配置 K ...
- kubeadm部署多master节点高可用k8s1.16.2
一.架构信息 系统版本:CentOS 7.6 内核:3.10.0‐1062.4.1.el7.x86_64 Kubernetes: v1.16.2 Dockerce: 19.03 推荐硬件配置:2核4 ...
- 版本管理工具Git(三)Gitlab高可用
高可用模式 企业版 社区版 我们这里说一下成本比较低的主备模式,它主要依赖的是DRBD方式进行数据同步,需要2台ALL IN ONE的GitLab服务器,也就是通过上面安装方式把所有组件都安装在一起的 ...
- Spring Cloud第三篇 | 搭建高可用Eureka注册中心
本文是Spring Cloud专栏的第三篇文章,了解前两篇文章内容有助于更好的理解后面文章: Spring Cloud第一篇 | Spring Cloud前言及其常用组件介绍概览 Spring ...
- Redis学习三:Redis高可用之哨兵模式
申明 本文章首发自本人公众号:壹枝花算不算浪漫,如若转载请标明来源! 感兴趣的小伙伴可关注个人公众号:壹枝花算不算浪漫 22.jpg 前言 Redis 的 Sentinel 系统用于管理多个 Redi ...
- [经验交流] Active-Active 方式设置 kubernetes master 多节点高可用
关于 kubernetes master 多节点以及高可用,网上的方法多采取 Active-Standby 方式,即: 通过 pacemaker 等软件使得某种 master 服务(apiserver ...
随机推荐
- AtCoder Regular Contest 069 F Flags 二分,2-sat,线段树优化建图
AtCoder Regular Contest 069 F Flags 二分,2-sat,线段树优化建图 链接 AtCoder 大意 在数轴上放上n个点,点i可能的位置有\(x_i\)或者\(y_i\ ...
- bzoj3073: [Pa2011]Journeys 线段树优化建图
bzoj3073: [Pa2011]Journeys 链接 BZOJ 思路 区间和区间连边.如何线段树优化建图. 和单点连区间类似的,我们新建一个点,区间->新点->区间. 又转化成了单点 ...
- Eureka 的高级使用
基础架构Eureka架构中的三个核心角色: 服务注册中心 Eureka的服务端应用,提供服务注册和发现功能,就是刚刚我们建立的eureka-demo 服务提供者 提供服务的应用,可以是SpringBo ...
- Spring不能直接@autowired注入Static变量
一.业务场景 spring框架应用中有些静态方法需要依赖被容器管理的类,就像这样: @Component public class Test { @Autowired private static U ...
- vs2017+qt5.x编译32位应用<转>
原文地址:https://www.cnblogs.com/woniu201/p/10862170.html 概述 最近有同学私信我,问如何使用vs2017+qt5.10编译出32位的应用,需要使用ms ...
- fdisk、mkfs.ext4、make_ext4fs、img2simg、simg2img
一个典型的嵌入式系统是由uboot+kernel+rootfs组成的,其中uboot和kernel都是二进制,rootfs存在文件系统. 二进制在烧录的时候比较简单,将二进制数据写入存储设备固定地址: ...
- TP 控制器和模型里面order 写法不同
控制器: Db::table('think_user')->where('status=1')->order('id desc')->limit(5)->select(); ...
- R3300L Android相关的记录
在寻找高版本Android固件的过程中遇到一个Android6.0的固件, 刷上去之后发现没有Root. 因为原发布者设置了收费的QQ群, 固件开机图上就是QQ群号, 满以为交了钱之后应该能有Root ...
- Visionworks OpenVX
[TOC] Visionworks OpenVX OpenVX heterogeneous computation framework Spec OpenVX 1.2源碼解析 - 目錄結構 除了官方的 ...
- 如何使用phantomJS来模拟一个HTML元素的鼠标悬停
如何使用phantomJS来模拟一个HTML元素的鼠标悬停 (How to use phantomJS to simulate mouse hover on a HTML element) 转 htt ...