IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> ngin概念及使用(搭建高可用集群方法) -> 正文阅读

[PHP知识库]ngin概念及使用(搭建高可用集群方法)

1.什么是nginx?nginx的功能

1.1什么是nginx:

是高性能的http和反向代理的服务器,处理并发能力特别高。

1.2 nginx功能:

①正向代理:需要客户端指定服务器地址,并指定访问。
②反向代理:暴露代理服务器地址出去,隐藏真实地址,通过nginx进行代理出去请求指向真实服务器。
③负载均衡:增加服务器数量,nginx通过代理分发请求到各个服务器上,可以解决各种请求负担。
④动静分离:就是指把一些动态资源和静态资源隔开,通过nginx对资源进行代理请求,这样就能解决服务器页面显示慢的问题,可以先显示一部分。

1.3 nginx下载及安装

官网地址:http://nginx.org/
1.安装所需要的依赖openssl、zlib、gcc
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
2.安装pcre
wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz
2.1解压tar -zxvf 压缩包名
2.2进入pcre目录进行./configure,然后再进行make && make install
3.安装nginx
解压文件,并./configure,然后再进行make && make install
4.解压完成后,在usr/local/nginx中发现多了个文件夹。
1.4启动nginx
进入usr/local/nginx/sbin
./nginx
启动出现错误:

sbin/nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory

解决办法:

ln -s /usr/local/lib/libpcre.so.1 /lib64
1.5 关闭nginx
./nginx -s stop

2.nginx配置文件篇

2.1目前nginx.conf文件解析:

1.全局块
配置服务器整体运行的配置指令
worker_processes 1; 处理并发数的配置,数值越大处理的并发数的越多
2.event块
配置用户与nginx服务器的网络连接
worker_connections 1024; 支持的最大连接数为 1024
3.http块
http {//http全局块
include mime.types; //文件引入
default_type application/octet-stream; //MIME-TYPE 定义
sendfile on;//
keepalive_timeout 65;//连接超时事件
//这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了
节省互联网服务器硬件成本。
server {//每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机。
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {//每个 server 块也分为全局 server 块,以及可以同时包含多个 locaton 块。
root html;
}

}
}
①、全局 server 块
最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或 IP 配置。
②、location 块
一个 server 块可以配置多个 location 块。
这块的主要作用是基于 Nginx 服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称
(也可以是 IP 别名)之外的字符串(例如 前面的 /uri-string)进行匹配,对特定的请求进行处理。地址定向、数据缓
存和应答控制等功能,还有许多第三方模块的配置也在这里进行。

3.配置负载均衡的用法

①配置监听的端口,新增一个server
server{
# listen 为需要监听的端口号为9001
listen 9001;
#服务器名称为localhost
server_name localhost;
location / {
#myserver为你要代理的地址多个地址的集群
proxy_pass http://myserver;
}
}

②配置集群,已tomcat为例
#配置代理服务器集群 注意该段配置在server外面,但是要配置在http块里面
upstream myserver{
#ip_hash
server 192.168.119.129:8081 weight=1;
server 192.168.119.129:8082 weight=10;
}
有几个参数,weight表示权重 可自行调整根据权重,权重越高获取客户端连接就越多跳转
Ip_hash 表示通过hash结果进行分配
默认是采用轮询
fail 按后端服务器的响应时间来分配请求,响应时间短的优先分配。

③查询结果:浏览器输入localhost:9001,能正确访问tomact

4.配置动静分离方法

①把静态页面与动态页面类型分开通过请求,比如把照片跟静态页面分开等

5.搭建高可用nginx集群

①依赖的环境:keepalived,
下载方式:yum install keepalived –y
安装之后,在 etc 里面生成目录 keepalived,有文件 keepalived.conf
global_defs { #全局配置
notification_email { #指定keepalived在发生切换时需要发送email到的对象
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc #指定发件人
smtp_server 192.168.200.1 #指定smtp服务器地址
smtp_connect_timeout 30 #指定连接超时时间
router_id LVS_DEVEL #此处注意router_id为负载均衡标识,在局域网内应该是唯一的。
}

vrrp_instance VI_1 { #虚拟路由的标识符号
state MASTER #指定哪个为master,哪个为backup,
#如果设置了nopreempt这个值不起作用,主备考priority决定
interface eth0 #设置实例绑定的网卡
virtual_router_id 51 #VPID标记
priority 100 #优先级,高优先级竞选为master
advert_int 1 #检查间隔,默认1秒
authentication { #设置认证
auth_type PASS #认证方式,类型主要有PASS、AH 两种
auth_pass 1111 #认证密码
}
virtual_ipaddress { #虚拟vip
192.168.200.16
192.168.200.17
192.168.200.18
}
}

virtual_server 192.168.200.100 443 { #集群使用的vip端口号
delay_loop 6 #健康检查的时间间隔
lb_algo rr #调度算法
lb_kind NAT #负载均衡转发规则一般包括DR,NAT,TUN 3种
nat_mask 255.255.255.0 #子网掩码
persistence_timeout 50 #会话保持时间,就是把用户请求转发给同一个服务器,不然
#刚在1上提交完帐号密码,就跳转到另一台服务器2上了
protocol TCP #转发的协议 有tcp和udp两种
real_server 192.168.201.100 443 { #真实的服务器地址
weight 1 #权重
SSL_GET { #健康检测方式
url { #检测url
path /
digest ff20ad2481f97b1754ef3e12ecd3a9cc #需要检测的内容,检查后的摘要信息
}
url {
path /mrtg/
digest 9b3a0c85a887a256d6939da88aabd8cd
}
connect_timeout 3 #连接超时的时间
nb_get_retry 3 #重试次数
delay_before_retry 3 #重试的时间间隔
}
}
}

virtual_server 10.10.10.2 1358 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
sorry_server 192.168.200.200 1358

real_server 192.168.200.2 1358 {
weight 1
HTTP_GET {
url {
path /testurl/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl2/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl3/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}

real_server 192.168.200.3 1358 {
weight 1
HTTP_GET {
url {
path /testurl/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334c
}
url {
path /testurl2/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334c
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}

virtual_server 10.10.10.3 1358 {
delay_loop 3
lb_algo rr
lb_kind NAT
nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP

real_server 192.168.200.4 1358 {
weight 1
HTTP_GET {
url {
path /testurl/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl2/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl3/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}

real_server 192.168.200.5 1358 {
weight 1
HTTP_GET {
url {
path /testurl/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl2/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl3/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}

②修改keepalived.conf文件
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.119.129
smtp_connect_timeout 30
router_id LVS_DEVEL
}

vrrp_script chk_http_port {
script “/usr/local/src/nginx_check.sh”
interval 2 #(检测脚本执行的间隔)
weight 2
}
vrrp_instance VI_1 {
state BACKUP # 备份服务器上将 MASTER 改为 BACKUP
interface ens33 //网卡(记得修改)
virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同
priority 100 # 主、备机取不同的优先级,主机值较大,备份机值较小
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.17.50 // VRRP H 虚拟地址
}
}

③在/usr/local/src下创建nginx_check.sh脚本
#!/bin/bash
A=ps -C nginx –no-header |wc -l
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx
sleep 2
if [ ps -C nginx --no-header |wc -l -eq 0 ];then
killall keepalived
fi
fi

④分别启动keepalived和nginx,主从都启动
关闭运行 192.168.17.50 能正常连接到服务器,再次测试关闭主服务器的nginx和keepalived,再次访问还是能访问到

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-09-13 09:03:46  更:2021-09-13 09:04:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 17:35:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码