一、服务器搭建策略
单机模式: 只有一台应用服务器,组成一个单机模式
 优点:简单方便(搭建、运营、维护)
 缺点:不能出故障(停电、断网、系统崩溃、硬件老化、性能瓶颈)
 应用场景:小型项目(几十个人)
 集群(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 关闭防火墙 = 开放了所有的端口 ≠ 外界可以从任意端口进入系统(还要看是否有服务程序正在监听该端口)
 防火墙这种服务的关闭并不是永久关闭,开机后会自动启动(默认)










