nginx的安装配置并配合keepalived实现高可用与openResty的安装
这个是本例要实现的最终效果:
一、nginx的安装使用:
1、下载nginx
http://nginx.org/
2、下载安装pcre
https://sourceforge.net/projects/pcre/reviews
上传压缩包到linux服务器,并解压:tar -zxvf pcre-8.37.tar.gz
进入解压目录执行:./configure
再在安装目录下执行:make && make install
3、安装zlib、openssl
执行:yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
4、安装nginx
把nginx压缩包上传服务器,解压缩
tar -zxvf nginx-1.18.0.tar.gz
进入解压目录:./configure
再执行:make && make install
这时,进入/usr/local/会看到一个目录叫nginx 这里注意服务器端口的开放与否
查看开放的端口号:
firewall-cmd --list-all
设置开放的端口号:
firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-port=80/tcp --permanent
重启防火墙:
firewall-cmd --reload
关闭防火墙的端口:
firewall-cmd --remove-port=3306/tcp --permanent
查找进程号或端口
根据端口查找进程:
netstat -antp|grep 端口号
netstat -antp|grep 端口号
netstat -nlp|grep 端口号
netstat -nap|grep 端口号
netstat -ntulp|grep 端口号
根据进程查找端口:
①ps -ef|grep 应用 获得进程号
②netstat -nap|grep 进程号 获得端口号
5、nginx的常用命令
启动命令,在/usr/local/nginx/sbin 目录下执行: ./nginx
关闭命令,在/usr/local/nginx/sbin 目录下执行 ./nginx -s stop
重新加载命令,在/usr/local/nginx/sbin 目录下执行 ./nginx -s reload
查看版本号,在/usr/local/nginx/sbin 目录下执行 ./nginx -v
6、放置自定义页面 a.html
在三台服务器的/home/soft/tomcat/apache-tomcat-8.5.63/webapps/ROOT 目录分别放入 a135.html、a136.html、a137.html
内容分别是
<h1> 我是135</h1>
<h1> 我是136</h1>
<h1> 我是137</h1>
配置tomcat的欢迎页面 /home/soft/tomcat/apache-tomcat-8.5.63/conf/web.xml
改为:
<welcome-file-list>
<!-- <welcome-file>index.html</welcome-file>-->
<!-- <welcome-file>index.htm</welcome-file>-->
<!-- <welcome-file>index.jsp</welcome-file>-->
<welcome-file>a135.html</welcome-file>
</welcome-file-list>
再启动访问tomcat欢迎页面就是a135.html/a136.html/a137.html的内容了
7、nginx配置到访问自己的tomcat
server {
listen 10081;
server_name localhost;
location / {
proxy_pass http://localhost:8080;
proxy_connect_timeout 10;
}
}
都启动后,界面访问 192.168.200.135:10081就可以看到tomcat里面的a135.html了
8、nginx实现集群配置并实现负载均衡
#user nobody;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
upstream myserver{
ip_hash;
server 192.168.200.135:8080 weight=1;
server 192.168.200.136:8080 weight=1;
server 192.168.200.137:8080 weight=1;
}
server {
listen 10081;
server_name localhost;
location / {
proxy_pass http://myserver;
proxy_connect_timeout 10;
}
}
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
- nginx常用配置参考:
nginx的upstream目前支持4种方式的分配
1、轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。 2、weight
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。 例如: upstream bakend {
server 192.168.0.14 weight=10;
server 192.168.0.15 weight=10;
}
2、ip_hash 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。 例如: upstream
bakend {
ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:80;
}3、fair(第三方) 按后端服务器的响应时间来分配请求,响应时间短的优先分配。 upstream backend {
server server1;
server server2;
fair;
}4、url_hash(第三方)
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
例:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法
upstream backend {
server squid1:3128;
server squid2:3128;
hash
$request_uri;
hash_method crc32;
}tips:
upstream bakend{#定义负载均衡设备的Ip及设备状态
}{
ip_hash;
server 127.0.0.1:9090 down;
server 127.0.0.1:8080 weight=2;
server 127.0.0.1:6060; server
127.0.0.1:7070 backup;
} 在需要使用负载均衡的server中增加 proxy_pass http://bakend/;每个设备的状态设置为:
1.down表示单前的server暂时不参与负载
2.weight为weight越大,负载的权重就越大。
3.max_fails:允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream模块定义的错误
4.fail_timeout:max_fails次失败后,暂停的时间。
5.backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。nginx支持同时设置多组的负载均衡,用来给不用的server来使用。
client_body_in_file_only设置为On 可以讲client post过来的数据记录到文件中用来做debug
client_body_temp_path设置记录文件的目录 可以设置最多3层目录location对URL进行匹配.可以进行重定向或者进行新的代理 负载均衡
##配置虚拟机
server {
listen 80; 配置监听端口
server_name image.***.com; 配置访问域名location ~* .(mp3|exe)$ { #对以“mp3或exe”结尾的地址进行负载均衡 proxy_pass
http://img_relay$request_uri; #设置被代理服务器的端口或套接字,以及URL >proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
以上三行,目的是将代理服务器收到的用户的信息传到真实服务器上 }
二、正向代理与反向代理
正向代理:
代理的是客户端,安装在客户端本机上。正向代理是代理服务器位于客户端和目标服务器之间,代理服务器代表客户端向目标服务器发出请求。目标服务器不知道实际发起请求的是客户端,而是以为是代理服务器发起的
使用场景:
- 访问受限资源: 当客户端无法直接访问某些资源,但代理服务器可以访问,这时可以通过正向代理来获取目标资源。
- 隐私保护:客户端通过正向代理访问目标服务器,目标服务器无法直接识别客户端,从而保护了客户端的隐私。
反向代理:
代理的是服务端,让用户无感知地浏览服务器资源(无论动容增加了多少台服务器,用户都无法感知,用户访问的永远是域名)。代理服务器代表目标服务器向客户端提供服务。客户端不知道实际提供服务的是目标服务器,而是以为是代理服务器提供的
使用场景:
- 负载均衡: 多个目标服务器提供相同服务,反向代理可以根据负载均衡算法将请求分发到不同的服务器,以提高系统性能和可用性。
- 隐藏目标服务器: 反向代理可以隐藏后端的真实服务器,提高安全性。
三、keepalived的安装
1、上传解压
把压缩包上传到(注意目录位置,不要占用/usr/local/keepalived目录,后面会用到): /usr/local/lc
解压:
tar -zxvf keepalived-1.4.2.tar.gz
2、记得安装插件(如果已安装请忽略)
yum install -y gcc openssl-devel popt-devel
3、在解压目录执行
./configure --prefix=/usr/local/keepalived
4、安装 配置
make && make install
5、因为没有使用 keepalived 的默认路径安装(默认是/usr/local) ,安装完成之后,需要做一些工作复制默认配置文件到默认路径
创建目录: mkdir /etc/keepalived
①把keepalived的文件复制到指定目录:
cp -a /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
② 把keepalived的文件复制到指定目录:
cp -a /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig
③ 拷贝主程序
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
9、修改配置文件
vim /etc/keepalived/keepalived.conf
内容:
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
#(重点参数)局域网keppalived主机身份标识信息(每台唯一)
router_id LVS_135
vrrp_skip_check_adv_addr
# 严格模式不支持单播,所以禁用掉
#vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
#VRRP协议相关配置
vrrp_instance VI_1 {
#keepalived角色描述信息,可配置参数(MASTER,BACKUP)
state MASTER
# 本机虚拟网卡名字,将虚拟ip用于那块网卡,使用ifconfig查看本机网卡信息
interface ens32
#表示keepalived家族表示信息,同一个keepalived集群的virtual_router_id相同
virtual_router_id 51
#keepalved服务竞选主备服务器优先级设置(数字越大越优先)一般master大于salve,如果都是BACKUP的话就是按照权重来选举MASTER
priority 100
#主服务器组播包发送间隔时间
advert_int 1
#主备主机之间的认证表示信息(准备一致)
authentication {
#采用明文认证机制
auth_type PASS
#编写的明文密码
auth_pass 1111
}
#设置虚拟ip地址信息
virtual_ipaddress {
## 虚拟ip地址(VIP,一个尚未占用的内网ip即可) 也可以配置多个
192.168.200.88
#192.168.200.89
}
}
10、keepalived的操作命令
启动:service keepalived start
查看:service keepalived status
停止:service keepalived stop
启动之后访问:http://192.168.200.88:10081/ 也访问到tomcat的那张图片
同样原理在136/137配置启动 keepalived
:当停止135的keepalived时,再访问依然能通但返回136的html那就是说明做到了主从热备,在停掉136 的再访问http://192.168.200.88:10081/还能通返回137的html信息
keepalived+nginx实现主从热备成功
四、openResty安装教程
1.下载地址
http://openresty.org/cn/download.html
2. 介绍
OpenResty(又称:ngx_openresty) 是一个基于 NGINX 的可伸缩的 Web平台,由中国人章亦春发起,提供了很多高质量的第三方模块。 OpenResty 是一个强大的 Web 应用服务器,Web 开发人员可以使用Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,更主要的是在性能方面,OpenResty可以 快速构造出足以胜任10K 以上并发连接响应的超高性能 Web 应用系统
3.安装linux环境依赖
yum -y install readline-devel pcre-devel openssl-devel
4.上传软件并解压安装
1.上传openresty-1.21.4.1.tar.gz到/home/lc(自己方便的目录即可)目录下,并解压:
tar -zxvf openresty-1.21.4.1.tar.gz
2. 进入解压目录并执行配置
cd openresty-1.21.4.1
./configure
3.编译
make && make install
默认情况下程序会被安装到/usr/local/openresty
目录
5.设置工作目录
我们指定/wls/web为工作目录(根据自己习惯)
创建目录:
mkdir -p /wls/web
cd /wls/web/
mkdir logs/ conf/
其中logs用于存放日志;conf用于存放配置文件
6.把默认目录下的nginx.conf/mime.types/html 文件拷贝到我们自己建的工作目录
cp -a /usr/local/openresty/nginx/conf/nginx.conf /wls/web/conf/
cp -a /usr/local/openresty/nginx/conf/mime.types /wls/web/conf/
cp -a /usr/local/openresty/nginx/html /wls/web/
7. 启动、停止、重载命令
1.启动
/usr/local/openresty/nginx/sbin/nginx -p /wls/web/ -c /wls/web/conf/nginx.conf
2.停止
/usr/local/openresty/nginx/sbin/nginx -p /wls/web/ -s stop
3.重载配置
/usr/local/openresty/nginx/sbin/nginx -p /wls/web/ -s reload
4.检测配置是否正确
/usr/local/openresty/nginx/sbin/nginx -p /wls/web/ -t
8.访问
目前配置监听的是80端口,如果自己想改,去/wls/web/conf修改nginx.conf
http://192.168.183.129/
出现
Welcome to OpenResty!
代表安装正确