最原始的服务部署,为单点部署,即直接把服务部署在一个服务器上。如果服务器出现故障,或者服务因为某个异常而挂掉,则服务就会发生中断。单点部署出现故障的概率最高。

后来,出现了网关,比如 nginx kong 等。如下图所示:

这样,所有客户请求都会经过网关,再由网关转发到各个服务。如果由服务出现故障,则网关会自动跳过故障服务,把请求分发到可用服务。因为网关只是起到服务转发的功能,所以网关出现故障的概率比应用出现故障的概率低很多。

 http
{
upstream myserver {
server 192.168.12.181:80 weight=3 max_fails=3 fail_timeout=20s;
server 192.168.12.182:80 weight=1 max_fails=3 fail_timeout=20s;
server 192.168.12.183:80 weight=4 max_fails=3 fail_timeout=20s;
}
server
{
listen 80;
server_name www.domain.com 192.168.12.189;
index index.htm index.html;
root /ixdba/web/wwwroot;
location / {
proxy_pass http://myserver;
proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;
include /opt/nginx/conf/proxy.conf;
}
}
}

但是,网关并非会永远不宕机,如果遭遇入侵,或者机房断电。网关服务出现故障,则不管下面的应用服务部署了多少个都没用。

于是就出现了第三种集群。如下图所示,借助keeplived部署2个以上的nginx 网关。这样网关出现故障导致服务中断的机率将大大降低。

这里主从nginx服务的配置是一样的。

3.keepalive的配置:/etc/keepalived/keepalivec.conf

主节点(Master节点配置)

 (1)修改/etc/keepalived/keepalivec.conf 配置文件
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
#当前主机ip
smtp_server 192.168.17.129
smtp_connect_timeout 30
# 重点1:通过它,可以访问到主机,在hosts文件中,要做映射关系,类似于 127.0.0.1 LVS_DEVEL,host文件路径:/etc/hosts
router_id LVS_DEVEL
} #重点2:检测脚本,目的是定时执行,检测nginx的状态,如果挂了尝试重启,如果启动失败,则停止该节点的nginx和keepaive
vrrp_script chk_http_port {
script "/usr/local/src/nginx_check.sh" # 执行脚本所在的位置,自定义脚本后面会提及
interval 2 #检测脚本执行的间隔,单位秒,每个2秒执行一次脚本
weight 2 #脚本执行满足,权重加2,这里其实没搞明白..
} #重点3:主备节点的区别配置
vrrp_instance VI_1 {
state MASTER # 备份服务器上将 MASTER 改为 BACKUP
interface ens33 # 绑定的网卡,通过ipconfig查看
virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同
priority 100 # 主、备机取不同的优先级,主机值较大,备份机值较小(比如主机100,备机90)
advert_int 1 #每隔一秒发送一次心跳,确保从服务器(keepalive)是否还活着
authentication { # 心跳检测需要的密码
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.17.50 # VRRP H 虚拟地址(重点:虚拟ip配置,客户端通过该ip进行访问,主节点和备用节点谁占有这个ip,谁提供反向代理服务)
}
}
(2)在/usr/local/src 添加检测脚本nginx_check.sh,检查Nginx是否还活着
#!/bin/bash
#查看ningx的进程号,并统计数量
A=`ps -C nginx –no-header |wc -l`
#等于0时,即nginx挂了,尝试重启
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx #Nginx启动命令的位置
sleep 2
#启动失败,杀掉keepalive
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi

高可用linux 服务器搭建的更多相关文章

  1. 构建高可用Linux服务器一

    1.显示物理CPU个数:cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -1 2.显示每个物理CPU中的core ...

  2. 构建高可用Linux服务器二

    centos优化: 1.关闭不需要的服务:ntsysv crond:自动计划任务 network:已配置网络接口的脚步程序服务. sshd:openssh服务器守护进程. irqbalance:启用i ...

  3. Hadoop 3.1.2(HA)+Zookeeper3.4.13+Hbase1.4.9(HA)+Hive2.3.4+Spark2.4.0(HA)高可用集群搭建

    目录 目录 1.前言 1.1.什么是 Hadoop? 1.1.1.什么是 YARN? 1.2.什么是 Zookeeper? 1.3.什么是 Hbase? 1.4.什么是 Hive 1.5.什么是 Sp ...

  4. MongoDB 3.4 高可用集群搭建(二)replica set 副本集

    转自:http://www.lanceyan.com/tech/mongodb/mongodb_repset1.html 在上一篇文章<MongoDB 3.4 高可用集群搭建(一):主从模式&g ...

  5. MHA 高可用集群搭建(二)

    MHA 高可用集群搭建安装scp远程控制http://www.cnblogs.com/kevingrace/p/5662839.html yum install openssh-clients mys ...

  6. HDFS-HA高可用集群搭建

    HA高可用集群搭建 1.总体集群规划 在hadoop102.hadoop103和hadoop104三个节点上部署Zookeeper. hadoop102 hadoop103 hadoop104 Nam ...

  7. CentOS7/RHEL7 pacemaker+corosync高可用集群搭建

     TOC \o "1-3" \h \z \u 一.集群信息... PAGEREF _Toc502099174 \h 4 08D0C9EA79F9BACE118C8200AA004B ...

  8. Hadoop HA高可用集群搭建(Hadoop+Zookeeper+HBase)

    声明:作者原创,转载注明出处. 作者:帅气陈吃苹果 一.服务器环境 主机名 IP 用户名 密码 安装目录 master188 192.168.29.188 hadoop hadoop /home/ha ...

  9. MongoDB高可用集群搭建(主从、分片、路由、安全验证)

    目录 一.环境准备 1.部署图 2.模块介绍 3.服务器准备 二.环境变量 1.准备三台集群 2.安装解压 3.配置环境变量 三.集群搭建 1.新建配置目录 2.修改配置文件 3.分发其他节点 4.批 ...

  10. RabbitMQ高级指南:从配置、使用到高可用集群搭建

    本文大纲: 1. RabbitMQ简介 2. RabbitMQ安装与配置 3. C# 如何使用RabbitMQ 4. 几种Exchange模式 5. RPC 远程过程调用 6. RabbitMQ高可用 ...

随机推荐

  1. h5响应式方案设计

  2. 如何通过canvas实现电子签名

    想要实现一个电子签名,可以支持鼠标签名,还能类似书法效果线条有粗有细,同时可以导出成图片. 一.实现连贯的划线 1)首先需要注册鼠标下压.鼠标放开.鼠标移出和鼠标移动事件,通过鼠标下压赋值downFl ...

  3. paddlespeech asr脚本demo

    概述 paddlespeech是百度飞桨平台的开源工具包,主要用于语音和音频的分析处理,其中包含多个可选模型,提供语音识别.语音合成.说话人验证.关键词识别.音频分类和语音翻译等功能. 本文介绍利用p ...

  4. Tmux | 常用操作存档

    (因为自己实在是太好忘了,所以在博客存档方便查找) 参考资料:Tmux 使用教程 | 阮一峰的网络日志 tmux new -s <session-name> <Ctrl+B D> ...

  5. 2023-SWPU NSS秋季招新赛(校外赛道)Misc—我要成为原神高手WP

    1.题目信息 我是神里绫华的狗!!! 2.解题方法 有个genshin.h文件夹,打开看看发现里面是一堆文件夹0 1A 1A0等等,而且每个文件夹里面都有文件,0 1A 1A0...看着很眼熟,我们用 ...

  6. 指定特定IP走特定网卡的方法

    指定特定IP走特定网卡的方法 背景 目标: 能够在有VPN以及多个网卡的情况下, 使用特定的IP地址进行登录服务器. 作用: 便于审计以及安全管理, 避免出现安全风险. 方式方法: route 命令设 ...

  7. [转帖]备份与恢复工具 BR 简介

    https://docs.pingcap.com/zh/tidb/v4.0/backup-and-restore-tool BR 全称为 Backup & Restore,是 TiDB 分布式 ...

  8. [转帖]一文快速入门 ClickHouse

    https://zhuanlan.zhihu.com/p/621480049 什么是clickhouse ClickHouse是一种OLAP类型的列式数据库管理系统,这里有两个概念:OLAP.列式数据 ...

  9. [转帖]Jmeter创建简单的HTTP(S)请求测试-3

    在上一章节中,介绍了Jmeter基本的组成组件,那么我们如何使用这些组件去完成测试呢,以下将通过创建一个简单的HTTP(S)测试进行说明,另外,除JDBC请求外,Jmeter进行测试构建的步骤大同小异 ...

  10. [转帖]gcc与makefile常用操作(绝对常用,也绝对够用)

    makefile与gcc常用操作 一.温故知新 1.可执行程序的生成过程 2.gcc的常用操作 二.make操作 三.编写Makefile文件时常用操作 注意:在Makefile文件中 空格和缩进是完 ...