1:准备工作
准备三台主机:
系统为:CentOS7.4(系统和IP自己定义修改以此为例)
CentOS 7.4 192.168.194.100 服务端
CentOS 7.4 192.168.194.10 客户端1
CentOS 7.4 192.168.194.20 客户端2
方便使用,修改好主机名保证服务端192.168.194.100和客户端1 192.168.194.10和客户端2 192.168.194.20能通保证三台主机能通外网(安装nginx所需要的依赖包时,要用到)
安装nginx流程
1:yum innstall gcc gcc-c++ glibc automake pcre zlip zlib-devel openssl-devel pcre-devel wget lrzsz
2:wget -chttp://nginx.org/download/nginx-1.16.1.tar.gz
3:tar -xzvf nginx-1.16.0.tar.gz -C /usr/local/
4:nginx-1.16.0/
5:./configure --prefix=/usr/local/nginx--with-http_ssl_module --with-http_stub_status_module
6:make && make install
7:/usr/local/nginx/sbin/nginx -t
8:/usr/local/nginx/sbin/nginx
9:/usr/local/nginx/sbin/nginx -s reload
10:netstat -lntup | grep nginx
1:安装nginx所需要的依赖包
2:下载ngnix软件
3:解压缩包到你要安装的路径
4:cd切换到解压后的路径
5-6:编译安装
7:测试ngnix是否安装成功
8:启动ngnix
9:修改任何nginx配置文件之后要reload重新加载服务
10:查看nginx对应端口是否起来,有无异常
1:安装系统所需要的依赖包
yum install gcc gcc-c++ glibc automake pcre zlib zlib-developenssl-devel pcre-devel wget lrzsz
2:登录nginx官网下载nginx
1:下载到桌面,rz命令传到系统
2:复制软件链接下载
3:解压缩包到你要安装的路径(我的所有服务都安装在/usr/local下以此为例)
4:切换到你解压后的路径
5-6:编译安装./configure--prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module
7:安装完毕,测试:/usr/local/nginx/sbin/nginx -t出现test is successful ,说明你的nginx已经安装成功
8:启动nginx:/usr/local/nginx/sbin/nginx
9:netstat -lntup 或者ss -lntup 查看端口有没有起来。Nginx默认端口为80也修改默认端口路径,可以把端口改为其他端口,提高安全性Vim /usr/local/nginx/conf/nginx.conf
10:查看服务对应的端口是否起来
浏览器输入:http://192.168.194.10:80另外两台重复这样操作
自动化安装nginx:
人工安装耗时耗力,尤其要安装的达到几十台甚至上百台,不可能还是人工安装,可以用脚本安装,可以用自动化工具ansible等推送脚本安装,可以在服务端192.168.194.100上用ansible等自动化运维工具推送远程执行脚本安装,这样不用登陆客户端192.168.194.10和20,就可以完成在客户端的安装,这样既可以完成自动化运维工作省时省力,又可以锻炼自己自动化运维能力。Ansible工具是轻量级自动化工具,适合中小型企业,相比比zabbix以及其他自动化工具,比较好的优点就是不用每台客户端服务器系统上安装agent客户端工具,知道客户端系统的IP 用户名密码。。即可,基于SSH协议来开发的。
下面我们以ansible为例 能通外网,即可用yum安装ansible
要用ansible往其他客户端推送各种功能,必须保证服务端要能登录客户端系统,实现的方式有2种
1:ssh免密钥登录
2:在服务端ansible配置文件hosts里面添加客户端的IP、端口号、用户名、密码
1:服务器和客户端系统之间免密钥登录方法:
在服务端ansible192.168.194.100端 执行名ssh-keygen 生产公钥和私钥的密钥对:密钥对默认存放路径在cd /root/.ssh/
将公钥传送到客户端: ssh-copy-id root@192.168.194.10 ssh-copy-id root@192.168.194.10 输入客户端密码
正常ssh远程其他主机要用户名密码,
将公钥传送到客户端之后,会发现ssh远程主机直接免密码就登陆了
ssh root@192.168.194.10
然后在host里添加客户端的IP即可
2:用户密码登录:在服务端 ansible服务的hosts文件里面:/etc/ansible/hosts里面添加客户端的端口号、用户名、密码
Ansible基本用法
-m:要执行的模块,默认为command shell
-a:模块的参数
ansible 常用模块详解
ansible 常用的模块有:ping、yum、template、copy、user、group、service、raw、command、shell、script
ansible raw 、command 、shell 的区别:
shell 模块调用的/bin/sh指令执行
1.command 模块不是调用的shell的指令,所以没有bash’的环境变量
2.raw很多地方和shell类似,更多的地方建议使用shell和command模块
模板:ansible (单个IP或者分组)-m (模块名称) -a (模块的参数)
执行单个IP,远程操作只在这一个IP系统上操作
如果有多个IP系统同时操作,一个一个执行比较费时间,可以把多个IP加到分组,然后远程操作执行这个分组,那么分组下的IP都操作
Nginx自动安装脚本
#!/bin/bash
NGINX_SOFT="nginx-1.16.1.tar.gz"
NGINX_URL="http://nginx.org/download/"
NGINX_MAKE="./configure--prefix=/usr/local/nginx --with-http_ssl_module--with-http_stub_status_module"
NGINX_DES="/usr/local/nginx"
NGNIX_DIR=`echo$NGINX_SOFT|sed 's#.tar.*##g'`
yum install gccgcc-c++ glibc automake pcre zlip zlib-devel openssl-devel pcre-devel wget lrzsz
if [ -e$NGINX_DES/sbin/nginx ];then
echo "The nginx server is alreadyexists"
exit 0
fi
wget -c$NGINX_URL/$NGINX_SOFT
tar -xzvf$NGINX_SOFT
cd $NGNIX_DIR
$NGINX_MAKE
if [ $? -eq 0];then
make && make install
$NGINX_DES/sbin/nginx -t
$NGINX_DES/sbin/nginx
else
echo "The nginx configurefailed"
exit
fi
netstat -lntup|grep nginx
NGINX_SOFT="nginx-1.16.1.tar.gz" 指定软件版本NGINX_URL="http://nginx.org/download/" 指定下载路径
NGINX_MAKE="./configure --prefix=/usr/local/nginx--with-http_ssl_module --with-http_stub_status_module" 编译安装命令
NGINX_DES="/usr/local/nginx" 切换安装后的路径
NGNIX_DIR=`echo $NGINX_SOFT|sed 's#.tar.*##g' sed截取文件名字
yum install gcc gcc-c++ glibc automake pcre zlip zlib-developenssl-devel pcre-devel wget lrzsz 安装软件所需要的依赖包
if [ -e $NGINX_DES/sbin/nginx ];then if判断,如果这个路径已经有安装nginx,exit退出安装
echo "Thenginx server is already exists" 提示nginx已经存在,exit退出,不安装;如果没有安装,脚本继续往下走
exit 0fiwget -c $NGINX_URL/$NGINX_SOFT 下载软件版本
tar -xzvf $NGINX_SOFT 解压软件压缩包
cd $NGNIX_DIR 切换到解压后的路径
$NGINX_MAKE 编译安装
if [ $? -eq 0 ];then 如果$?=0.说明上一个命令安装成功,执行编译安装,脚本继续往下走 make &&make install
$NGINX_DES/sbin/nginx -t 测试是否成功成功 $NGINX_DES/sbin/nginx 启动Nginx服务else
echo "Thenginx configure failed" 如果$不=0,说明上个命令没有执行成功,脚本执行停止,退出,输入安装失败
exit
fi
netstat -lntup| grep nginx 查看端口是否起来
ansible test -m script -a '/root/nginx.sh' -m script: 是执行存在ansible服务端系统上的的脚本
-m shell: 是执行存在客户端系统上的脚本说
脚本存在/root/下,执行用全路径
ansible test -m script -a '/root/nginx.sh'
Ngnix默认访问的页面是一样的,两台页面一样,观察不方便,为了后面负载均衡轮询时候看的更清楚,随便修改两台客户端index.html页面,nginx默认网页是/usr/local/nginx/html/index.html我们改为10 10 和 20 20 ,后面负载均衡轮询时候看的更清楚;
服务端见建两个文件目录,防两个index.html
client1 为192.168.194.10服务器的网页
client2 为192.168.194.20服务器的网页
我们用ansible命令删除/usr/local/nginx/html/下的index.htm默认网页,然后copy推送本机建的index到两个客户端
修改配置文件之后,要重新加载nginx服务
浏览两个客户端的网页
修改服务端192.168.194.100的nginx配置文件
vim/usr/local/nginx/conf/nginx.conf
upstream webserver{
server 192.168.194.10:80 weight=8;
server 192.168.194.20:80 weight=8;}
Weight:权重,权重设置一样,轮询时候处理请求次数一样
server 192.168.194.10:80 weight=8;
server 192.168.194.20:80 weight=10;
Webserver:是负载均衡的名字server192.168.194.10:80:两台web服务器的IP和端口 如果权重设置的大,那么nginx会自动多转发到192.168.194.20,即192.168.194.20处理请求的次数比192.168.194.10要多
这时我们输入IP就不能输入客户端的IP了,要出输入反向代理服务器的IP,即服务端的IP:192.168.194.100,这样做的目的,是当我们网站负载量、并发量、访问量过大时候,我们一台服务器的网站完全负载不了那么多请求,我们就要做好几台一样的服务器网站,将网站访问进行平衡、分摊到多个服务器上进行运行,例如FTP服务器、Web服务器、企业核心应用服务器和其它主要任务服务器等,从而多台协同完成工作任务。
输入代理服务器的IP:http://192.168.194.100:80
第一次转发到192.168.194.10
摁F5刷新,模拟访问,第2次转发到192.168.194.20
摁F5刷新,模拟访问,第3次转发到192.168.194.10
摁F5刷新,模拟访问,第4次转发到192.168.194.20
代理服务器自动进行轮询转发访问。。