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实现三个节点高可用的更多相关文章

  1. 用Kolla在阿里云部署10节点高可用OpenStack

    为展现 Kolla 的真正实力,我在阿里云使用 Ansible 自动创建 10 台虚机,部署一套多节点高可用 OpenStack 集群! 前言 上次 Kolla 已经表示了要打 10 个的愿望,这次我 ...

  2. Rancher安装多节点高可用(HA)

    Rancher版本:Rancher v1.0.1 基本配置需求 多节点的HA配置请参照单节点需求 节点需要开放的端口 全局访问:TCP 端口22,80,443,18080(可选:用于在集群启动前 查看 ...

  3. Centos7.5基于MySQL5.7的 InnoDB Cluster 多节点高可用集群环境部署记录

    一.   MySQL InnoDB Cluster 介绍MySQL的高可用架构无论是社区还是官方,一直在技术上进行探索,这么多年提出了多种解决方案,比如MMM, MHA, NDB Cluster, G ...

  4. centos 7 Atlas keepalived 实现高可用 MySQL 5.7 MHA环境读写分离

    目录 简介 相关链接 环境准备 Atlas 环境 MySQL 集群环境 Atlas 安装 和 配置 为数据库的密码加密 修改配置文件 启动 Keepalived 安装配置 安装 master 配置 K ...

  5. kubeadm部署多master节点高可用k8s1.16.2

    一.架构信息 系统版本:CentOS 7.6 内核:3.10.0‐1062.4.1.el7.x86_64 Kubernetes: v1.16.2 Docker­ce: 19.03 推荐硬件配置:2核4 ...

  6. 版本管理工具Git(三)Gitlab高可用

    高可用模式 企业版 社区版 我们这里说一下成本比较低的主备模式,它主要依赖的是DRBD方式进行数据同步,需要2台ALL IN ONE的GitLab服务器,也就是通过上面安装方式把所有组件都安装在一起的 ...

  7. Spring Cloud第三篇 | 搭建高可用Eureka注册中心

    ​ ​本文是Spring Cloud专栏的第三篇文章,了解前两篇文章内容有助于更好的理解后面文章: Spring Cloud第一篇 | Spring Cloud前言及其常用组件介绍概览 Spring ...

  8. Redis学习三:Redis高可用之哨兵模式

    申明 本文章首发自本人公众号:壹枝花算不算浪漫,如若转载请标明来源! 感兴趣的小伙伴可关注个人公众号:壹枝花算不算浪漫 22.jpg 前言 Redis 的 Sentinel 系统用于管理多个 Redi ...

  9. [经验交流] Active-Active 方式设置 kubernetes master 多节点高可用

    关于 kubernetes master 多节点以及高可用,网上的方法多采取 Active-Standby 方式,即: 通过 pacemaker 等软件使得某种 master 服务(apiserver ...

随机推荐

  1. 上传OSS报错

    修改OSS

  2. 常见WinDbg问题及解决方案

    当你调试一个程序时,你最不想处理的是调试器不能正常工作.当你试图集中精力跟踪一个bug时,总是会因为次要的问题而被忽略,尤其是当调试器的问题导致你失去一个重新编程或者浪费了大量的时间等待调试器完成它, ...

  3. Reactive Extensions (Rx) 入门(3) —— Rx的事件编程

    译文:https://blog.csdn.net/fangxing80/article/details/7628322 原文:http://www.atmarkit.co.jp/fdotnet/int ...

  4. 原创:Kmeans算法实战+改进(java实现)

    kmeans算法的流程:   EM思想很伟大,在处理含有隐式变量的机器学习算法中很有用.聚类算法包括kmeans,高斯混合聚类,快速迭代聚类等等,都离不开EM思想.在了解kmeans算法之前,有必要详 ...

  5. 拼多多面试真题:如何用 Redis 统计独立用户访问量!

    阅读本文大概需要 2.8 分钟. 作者:沙茶敏碎碎念 众所周至,拼多多的待遇也是高的可怕,在挖人方面也是不遗余力,对于一些工作 3 年的开发,稍微优秀一点的,都给到 30K 的 Offer. 当然,拼 ...

  6. https与http的区别?

    https要比http更加安全一些,也就是说http协议是由ssl+http协议构建的可进行加密传输.身份验证的网络协议要比http协议安全 现在大多数的网站都逐渐用https://,因为安全问题太重 ...

  7. zookeeper (二) paxos & fast paxos & FastLeaderElection

    参考文章: http://blog.csdn.net/xhh198781/article/details/10949697 paxos->fast paxos->FastLeaderEle ...

  8. 探索ENCODE数据库 | Encyclopedia of DNA Elements

    ENCODE: Encyclopedia of DNA Elements 目标:按不同组织,收集人类(还有小鼠.worm.fly)基因组里面的所有功能元件 The primary goal of th ...

  9. Linux系统中日志级别详情

    日志信息分类 1.等级由低到高:debug<info<warn<Error<Fatal; 2.区别: debug 级别最低,可以随意的使用于任何觉得有利于在调试时更详细的了解系 ...

  10. sshfs+overlayfs实现一个共享只读资源被多个主机挂载成可写目录

    sshfs+overlayfs实现一个共享只读资源被多个主机挂载成可写目录 1.sshfs -o ssh_command='sshpass -p '"${passwd}"' ssh ...