|
| 1 | +# Nginx + Keepalived 高可用 |
| 2 | + |
| 3 | + |
| 4 | +## 说明 |
| 5 | + |
| 6 | +- 高可用 HA(High Availability),简单讲就是:我某个应用挂了,自动有另外应用起来接着扛着,致使整个服务对外来看是没有中断过的。这里的重点就是不中断,致使公司整个业务能不断进行中,把影响减到最小,赚得更多。 |
| 7 | +- 因为要不中断,所以我们就需要用到了 Keepalived。Keepalived 一般不会单独使用,基本都是跟负载均衡软件(LVS、HAProxy、Nginx)一起工作来达到集群的高可用效果。 |
| 8 | +- Keepalived 有双主、主备方案 |
| 9 | +- 常用词: |
| 10 | + - 心跳:Master 会主动给 Backup 发送心跳检测包以及对外的网络功能,而 Backup 负责接收 Master 的心跳检测包,随时准备接管主机。为什么叫心跳不知道,但是挺形象的,心跳同步。 |
| 11 | + - 选举:Keepalived 配置的时候可以指定各台主机优先级,Master 挂了,各台 Backup 要选举出一个新的 Master。 |
| 12 | +- Keepalived |
| 13 | + - 官网:<http://www.keepalived.org/> |
| 14 | + - 官网下载:<http://www.keepalived.org/download.html> |
| 15 | + - 官网文档:<http://www.keepalived.org/documentation.html> |
| 16 | + |
| 17 | + |
| 18 | +## 搭建 |
| 19 | + |
| 20 | +- 软件版本: |
| 21 | + - Nginx:**1.8.1** |
| 22 | + - Keepalived:**1.2.20** |
| 23 | + - JDK:**8u72** |
| 24 | + - Tomcat:**8.0.32** |
| 25 | +- 部署环境: |
| 26 | + - VIP:192.168.1.50 |
| 27 | + - 第一台主机:Nginx 1 + Keepalived 1 + Tomcat 1 == 192.168.1.120(Master) |
| 28 | + - 第二台主机:Nginx 2 + Keepalived 2 + Tomcat 2 == 192.168.1.121(Backup) |
| 29 | +- 两台机子进行时间校准:[NTP(Network Time Protocol)介绍](NTP.md) |
| 30 | +- 第一台主机部署(第二台主机也是按着这样完全配置): |
| 31 | + - JDK 的安装:[JDK 安装](JDK-Install.md) |
| 32 | + - Tomcat 的安装:[Tomcat 安装和配置、优化](Tomcat-Install-And-Settings.md) |
| 33 | + - Nginx 的安装:[Nginx 安装和配置](Nginx-Install-And-Settings.md) |
| 34 | + - 添加虚拟 IP: |
| 35 | + - 复制一个网卡信息:`sudo cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0:0` |
| 36 | + - 编辑配置文件:`sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0:0` |
| 37 | + - 修改内容为如下信息: |
| 38 | + ``` nginx |
| 39 | + DEVICE=eth0:0 >>> 这个需要修改 |
| 40 | + TYPE=Ethernet |
| 41 | + UUID=8ddbb256-caab-4ddf-8e9a-6527b4ac5a26 |
| 42 | + ONBOOT=yes |
| 43 | + NM_CONTROLLED=yes |
| 44 | + BOOTPROTO=none |
| 45 | + IPADDR=192.168.1.50 >>> 这个需要修改 |
| 46 | + PREFIX=24 |
| 47 | + GATEWAY=192.168.1.1 |
| 48 | + DNS1=101.226.4.6 |
| 49 | + DEFROUTE=yes |
| 50 | + IPV4_FAILURE_FATAL=yes |
| 51 | + IPV6INIT=no |
| 52 | + NAME="System eth0:0" >>> 这个需要修改 |
| 53 | + HWADDR=00:0c:29:f4:17:db |
| 54 | + LAST_CONNECT=1460213205 |
| 55 | + ``` |
| 56 | + - 重启网卡服务:`service network restart` |
| 57 | + - 如果你要绑定更多虚拟 IP,则多复制几个网卡配置出来,命名如下:ifcfg-eth0:0,ifcfg-eth0:1,ifcfg-eth0:2 ...... |
| 58 | + - Keepalived 开始安装 |
| 59 | + - 安装依赖:`sudo yum install -y gcc openssl-devel popt-devel` |
| 60 | + - 解压包:`cd /opt/setups/ ; tar zxvf keepalived-1.2.20.tar.gz` |
| 61 | + - 编译:`cd /opt/setups/keepalived-1.2.20 ; ./configure --prefix=/usr/program/keepalived` |
| 62 | + - 编译安装:`make && make install` |
| 63 | + - Keepalived 设置随机启动 |
| 64 | + - 复制配置文件到启动脚本目录:`cp /usr/program/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/keepalived` |
| 65 | + - 增加权限:`chmod +x /etc/init.d/keepalived` |
| 66 | + - 编辑配置文件:`vim /etc/init.d/keepalived` |
| 67 | + ``` nginx |
| 68 | + 把 15 行的:. /etc/sysconfig/keepalived,改为: |
| 69 | + . /usr/program/keepalived/etc/sysconfig/keepalived(注意:前面有一个点和空格需要注意) |
| 70 | + ``` |
| 71 | + - 添加环境变量:`vim /etc/profile` |
| 72 | + ``` nginx |
| 73 | + # Keepalived 配置 |
| 74 | + KEEPALIVED_HOME=/usr/program/keepalived |
| 75 | + PATH=$PATH:$KEEPALIVED_HOME/sbin |
| 76 | + export KEEPALIVED_HOME |
| 77 | + export PATH |
| 78 | + ``` |
| 79 | + - 刷新环境变量:`source /etc/profile` |
| 80 | + - 检测环境变量:`keepalived -v` |
| 81 | + - `ln -s /usr/program/keepalived/sbin/keepalived /usr/sbin/` |
| 82 | + - `vim /usr/program/keepalived/etc/sysconfig/keepalived` |
| 83 | + ``` nginx |
| 84 | + 把 14 行的:KEEPALIVED_OPTIONS="-D",改为: |
| 85 | + KEEPALIVED_OPTIONS="-D -f /usr/program/keepalived/etc/keepalived/keepalived.conf" |
| 86 | + ``` |
| 87 | + - 启动服务:`service keepalived start` |
| 88 | + - 加入随机启动:`chkconfig keepalived on` |
| 89 | +- 第一台主机配置: |
| 90 | + - `` |
| 91 | + - `` |
| 92 | + - `` |
| 93 | + - `` |
| 94 | + - `` |
| 95 | + - `` |
| 96 | + - `` |
| 97 | + - `` |
| 98 | + - `` |
| 99 | +- 第二台主机配置: |
| 100 | + |
| 101 | + |
| 102 | + |
| 103 | + |
| 104 | +## 资料 |
| 105 | + |
| 106 | +- <http://xutaibao.blog.51cto.com/7482722/1669123> |
| 107 | +- <https://m.oschina.net/blog/301710> |
| 108 | +- <http://blog.csdn.net/u010028869/article/details/50612571> |
| 109 | +- <> |
| 110 | +- <> |
| 111 | +- <> |
| 112 | +- <> |
| 113 | +- <> |
| 114 | + |
0 commit comments