300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 搭建Keepalived+Nginx高可用负载均衡服务器

搭建Keepalived+Nginx高可用负载均衡服务器

时间:2021-03-13 09:32:57

相关推荐

搭建Keepalived+Nginx高可用负载均衡服务器

一、服务器搭建策略

单机模式:只有一台应用服务器,组成一个单机模式

优点:简单方便(搭建、运营、维护)

缺点:不能出故障(停电、断网、系统崩溃、硬件老化、性能瓶颈)

应用场景:小型项目(几十个人)

集群(cluster)模式:

有一个应用服务器集群(cluster),由很多应用服务器组成一个集群

二、服务器三高

高可用:服务器能否能24*365不间断提供服务,服务器容灾性高

高并发:同一时间上,服务器能够同时容纳的用户连接数

高性能:服务器处理用户请求的速度,服务器的计算能力

三、服务器升级

纵向升级(对单台服务器做配置提升):

eg:换更强的cpu,加大内存和磁盘,加大网络带宽……

横向升级(堆服务器的数量):

节约成本,很廉价的机器都可以推入到集群(更受欢迎)

四、如何解决负载均衡高可用问题?

做备份

当主负载均衡服务器没有问题时,处于备用;当其出现问题时,备用服务器能够第一时间内顶替主负载均衡服务器的位置

难点:备份很容易,但是ip地址如何快速切换?

五、Keepalived实现备用机无缝顶替主机的原理:

多台nginx-----keepalived集群

keepalived集群中至少有两台机器

两台:一主一从

三台:一主二从…以此类推

为keepalived集群设置一个唯一的虚拟IP,虚拟IP默认会与master机器绑定在一起

即master机器将会有两个ip地址,一个是自己的源ip,一个是keepalived给的虚拟IP地址

非抢占模式下:

当master机器出现故障时,keepalived第一时间收回虚拟IP地址并分配给slave机器,此时相当于slave机器升级为master机器,此时用户只需要记住keepalived的虚拟IP地址即可

若master机器恢复正常,则不会被分配虚拟IP地址,直到slave机器出现故障后,master才会被分配虚拟IP地址

六、搭建Keepalived+Nginx高可用负载均衡服务器

1、设置keepalived负载均衡服务器

准备2台Nginx (一主一从),分别安装keepalived

yum -y install keepalived

查看网卡名字

打开配置文件

vim etc/keepalived/keepalived.conf

找到第19行

设置一主一从,设置对应优先级(主>备),设置虚拟IP

删除这两行, 否则虚拟IP会绑定失败

13 vrrp_skip_check_adv_addr14 vrrp_strict

启动keepalived, 得到虚拟IP地址

systemctl start keepalived

重启

systemctl restart keepalived

停止, 则会收回虚拟IP地址

systemctl stop keepalived

2、让keepalived监视nginx运行状态

在/etc/keepalived目录中编写一个可执行的脚本check_nginx.sh让keepalived监视nginx运行状态

#!/bin/bashA=`ps -C nginx --no-header |wc -l` if [ $A -eq 0 ];then /usr/local/nginx/sbin/nginxif [ `ps -C nginx --no-header |wc -l` -eq 0 ];thenexit 1elseexit 0fielseexit 0fi

检查nginx是否已经启动(ps任务管理器中是否有nginx进程)

IF nginx已经启动,keepalived认为当前机器没有问题,exit 0

IF nginx未启动,keepalived尝试去启动nginx

IF 能够启动成功nginx,keepalived认为当前机器没有问题,exit 0

IF 不能启动成功nginx,keepalived认为当前机器有问题,exit 1

此时nginx不需要我们自己启动,交给keepalived帮助我们去启动它

直接执行脚本显示权限不够

需要授予权限,绿色代表有执行权限

在执行执行check_nginx.sh脚本之前,nginx未启动

在执行check_nginx.sh脚本之后,则nginx已经被启动了

打开keepalived.conf

16 vrrp_script check_nginx {#定义一个策略,策略名为"check_nginx"17 script "/etc/keepalived/check_nginx.sh" #执行一次/etc/keepalived/check_nginx.sh脚本文件18 interval 1 #每隔1秒钟19 weight -20 #如果发现nginx启动失败了,将当前的机器的priority- }21 vrrp_instance VI_1 {22state MASTER23interface ens3324virtual_router_id 5125priority 10026advert_int 127authentication {28 auth_type PASS29 auth_pass 111130}31track_script {#指定keepalived跟踪策略为 "check_nginx"32 check_nginx33}34virtual_ipaddress {35 192.168.20.10036}37 }

先同时启动nginx

check_nginx.sh

再同时启动keepalived 虚拟IP默认在MASTER机器

systemctl stop keepalivedsystemctl start keepalived

七、设置nginx和tomcat开机自动启动

nginx启动命令

/usr/local/nginx/sbin/nginx./nginx # ./代表从当前目录找nginx

nginx停止命令

/usr/local/nginx/sbin/nginx -s quit./nginx -s quit

tomcat启动命令

/usr/local/tomcat/bin/startup.sh./startup.sh

tomcat停止命令

/usr/local/tomcat/bin/shutdown.sh./shutdown.sh

设置nginx和tomcat开机自动启动要告诉操作系统nginx启动命令在哪,tomcat启动命令在哪

1、设置可以在任何目录中使用 systemctl [操作] nginx 来操作 nginx 程序

创建nginx.service服务文件/lib/systemd/system/nginx.service

cd /lib/systemd/system //存放由操作系统管理的启动程序vim nginx.service//创建一个nginx服务文件

写入以下内容

[Unit]Description=nginxAfter=network.target[Service]Type=forkingExecStart=/usr/local/nginx/sbin/nginxExecReload=/usr/local/nginx/sbin/nginx -s reloadExecStop=/usr/local/nginx/sbin/nginx -s quitPrivateTmp=true[Install]WantedBy=multi-user.target

创建好这个服务文件后,启动nginx就可以在任何目录中使用

systemctl [操作] nginx.service/nginx

systemctl stop nginx #停止systemctl restart nginx #重启systemctl status nginx#状态systemctl enable nginx#允许开机自动启动systemctl disable nginx #禁止开机自动启动(默认)

2、设置可以在任何目录中使用 systemctl [操作] tomcat 来操作 tomcat 程序

创建tomcat.service服务文件/lib/systemd/system/tomcat.service

cd /lib/systemd/system //存放由操作系统管理的启动程序vim tomcat.service//创建一个tomcat服务文件

写入以下内容

[Unit]Description=Apache Tomcat 8After=syslog.target network.target[Service]Type=forkingExecStart=/usr/local/tomcat/bin/startup.shExecReload=/bin/kill -s HUP $MAINPIDExecStop=/usr/local/tomcat/bin/shutdown.shPrivateTmp=true[Install]WantedBy=multi-user.target

创建好这个服务文件后,启动tomcat就可以在任何目录中使用

systemctl [操作] tomcat.service/tomcat

systemctl stop tomcat #停止systemctl restart tomcat #重启systemctl status tomcat#状态systemctl enable tomcat#允许开机自动启动systemctl disable tomcat #禁止开机自动启动(默认)

八、yum是什么?

全称 Yellow dog Updater,Modified 是一个RedHat和Fedora在Centos系统中创建的软件安装包管理器

在 /etc/yum.repos.d 这个目录中有yum源文件

eg: Centos-Base.repo 文件中有很多mirror地址,即yum的远程仓库地址

yum search 搜索软件安装包名yum -y install 安装软件安装包名

注:使用yum指令需要联网

九、为什么keepalived (双机热备服务)可以直接使用systemctl 操作 keepalived?

因为 keepalived 是使用yum -y install keepalived进行安装的程序,使用yum安装程序,会自动帮你安装好程序和写程序的服务文件/lib/systemd/system/keepalived.service,而nginx、tomcat是我们自己手动下载安装包进行安装的程序

为什么network (网卡服务)可以直接使用systemctl 操作 network?

为什么firewalld (防火墙服务)可以直接使用systemctl 操作 firewalld?

systemctl stop firewalld 关闭防火墙 = 开放了所有的端口 ≠ 外界可以从任意端口进入系统(还要看是否有服务程序正在监听该端口)

防火墙这种服务的关闭并不是永久关闭,开机后会自动启动(默认)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。