一、服务器搭建策略
单机模式: 只有一台应用服务器,组成一个单机模式
优点:简单方便(搭建、运营、维护)
缺点:不能出故障(停电、断网、系统崩溃、硬件老化、性能瓶颈)
应用场景:小型项目(几十个人)
集群(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_addr
14 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/bash
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
exit 1
else
exit 0
fi
else
exit 0
fi
检查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-20
20 }
21 vrrp_instance VI_1 {
22 state MASTER
23 interface ens33
24 virtual_router_id 51
25 priority 100
26 advert_int 1
27 authentication {
28 auth_type PASS
29 auth_pass 1111
30 }
31 track_script { #指定keepalived跟踪策略为 "check_nginx"
32 check_nginx
33 }
34 virtual_ipaddress {
35 192.168.20.100
36 }
37 }
先同时启动nginx
check_nginx.sh
再同时启动keepalived 虚拟IP默认在MASTER机器
systemctl stop keepalived
systemctl 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=nginx
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=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 8
After=syslog.target network.target
[Service]
Type=forking
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/usr/local/tomcat/bin/shutdown.sh
PrivateTmp=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 关闭防火墙 = 开放了所有的端口 ≠ 外界可以从任意端口进入系统(还要看是否有服务程序正在监听该端口)
防火墙这种服务的关闭并不是永久关闭,开机后会自动启动(默认)