Nginx+Keepalived入门到实战(持续更新......)
Posted Jeffrey_开发问题粉碎机
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx+Keepalived入门到实战(持续更新......)相关的知识,希望对你有一定的参考价值。
1,nginx基本概念
1.1,Nginx是什么,做什么事情 Nginx简介
参考官网:http://nginx.org/en/
Nginx (engine x) 是一个HTTP 和反向代理服务器、一个邮件代理服务器和一个通用的 TCP/UDP 代理服务器。特点是占用内存少,并发能力强,能支撑50,000个并发连接数。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。
1.2,反向代理
正向代理
客户端中配置代理服务器,通过代理服务器访问互联网服务的过程,可以称之为正向代理。
反向代理
客户端通过方向代理服务器去访问服务器资源,并返回给客户端的过程,可以称之为反向代理。
隐藏了目标服务器的ip地址
1.3,负载均衡
客户端发送多个请求到代理服务器,通过代理服务器处理,分发访问目标服务器。
1.4,动静分离
把动态页面和静态页面由不同的服务器来解析,加快解析速度,降低原来单个服务器的压力。
2,Nginx在Linux系统部署,常用命令和配置文件
2.1,在linux系统中安装nginx
nginx安装包下载网址
http://nginx.org/en/download.htmlnginx
nginx在liunx部署步骤
参考此作者部署 :
https://blog.csdn.net/t8116189520/article/details/81909574
## 1.安装依赖包
## 一键安装上面四个依赖
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
## 2.下载并解压安装包
//创建一个文件夹
cd /usr/local
mkdir nginx
cd nginx
//下载tar包
wget http://nginx.org/download/nginx-1.13.7.tar.gz
tar -xvf nginx-1.13.7.tar.gz
## 3.安装nginx
//进入nginx目录
cd /usr/local/nginx
//进入目录
cd nginx-1.13.7
//执行命令
./configure
//执行make命令 执行make install命令
make && make install
## 4.配置nginx.conf
# 打开配置文件
vi /usr/local/nginx/conf/nginx.conf
## 将端口号改成8080,因为可能apeache占用80端口,apeache端口尽量不要修改,我们选择修改nginx端口。
## localhost修改为你服务器ip地址。
server {
listen 8001;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
}
## 5.进入/usr/local/nginx/sbin/,启动nginx服务
./nginx
## 6,编写启动Nginx服务脚本
vim /usr/local/nginx/start_nginx.sh
##添加如下内容
#!/bin/sh
cd /usr/local/nginx/sbin
./nginx
ps aux | grep nginx
## 7,编写关闭Nginx服务脚本
vim /usr/local/nginx/stop_nginx.sh
##添加如下内容
#!/bin/sh
cd /usr/local/nginx/sbin
./nginx -s stop
Nginx服务启动之后会有两个进程
2.2,Nginx常用命令
1,必须进入 /usr/local/nginx/sbin 目录下操作命令
2,查看nginx版本:./nginx -v
3,启动nginx:./nginx
4,关闭nginx:./nginx -s stop
5,重加载命令 :./nginx -s reload
2.3,Nginx配置文件
1.nginx配置文件由三部分组成
(1)全局块
## 从配置文件开发到events块之间的内容,主要设置一些影响nginx服务器整体运行的配置指令:
## 比如:worker_processes 1;nginx处理并发的数量,值越大,可以支持的并发处理量越大。
worker_processes 1
(2)events块
## events块设计的指令主要影响Nginx服务器与用户的网络连接:
## 比如:worker_connections 1024;支持的最大连接数
worker_connections 1024
(3)http块
## Nginx服务器配置中最频繁的部分;
## http块也可以包括http全局块,server块。
http {
include mime.types;
default_type application/octet-stream;
server {
listen 8081;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
2.4,nginx配置多个location路径,部署多项目可参照
nginx配置location的时候,经常发现报404错误,这往往是没有区分开root 和 allias区别,导致配置资源路径不对
server {
listen 8001;
server_name localhost;
charset utf-8;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
## alias 配置location路径
location /dcloud {
alias /usr/local/nginx/html/static/login;
index index.html;
}
## root配置location路径
location /login {
root /usr/local/nginx/dcloud;
index login.html;
}
......
}
关于root和alias的区别
root | alias |
---|---|
root用来设置根目录 | alias用来重置当前文件的目录 |
当访问location路径时,会将root 配置的路劲与location路径拼接成一个路径访问资源 | 当访问location路径时,会将alias 配置的路径替换location路径访问资源 |
测试实例如下图:
root 配置测试: /usr/local/nginx/dcloud/login
alias配置测试: /usr/local/nginx/html/static/login
3,Nginx配置实例1-反向代理
1.实现效果
(1) 打开浏览器,在浏览器地址栏输入地址 www.123.com,跳转linux系统tomcat主页面中
2.准备工作
(1)在linux系统安装tomcat,使用默认端口8080
* tomcat安装文件当道linux系统中,解压,进入tomcat的bin目录中,./startup.sh启动tomcat服务器
(2)对外开放访问的端口
* firewall-cmd --add-service=http --permanent
* firewall-cmd --add-port=8080/tcp --permanent
(3)重启防火墙
* firewall-cmd -reload
(4)查看开放的端口号
* firewall-cmd --list-all
#防火墙相关操作
[root@room8pc205 ~]# firewall-cmd --state //查看运行状态
[root@room8pc205 ~]# systemctl start firewalld //启动服务
[root@room8pc205 ~]# systemctl enable firewalld //设为开机启动
[root@room8pc205 ~]# systemctl status firewalld //查看是否启动成功
(5)在windows系统中通过浏览器访问tomcat服务器
3.1,配置反向代理一:
3.2,配置反向代理二:
使用nginx反向代理,实现根据访问的路劲跳转到不同的端口服务中,Nginx监听9001端口
访问http://192.168.0.31:9100/edu/ 直接跳转 127.0.0.1:8080
访问http://192.168.0.31:9100/vof/ 直接跳转 127.0.0.1:8081
3.3,测试效果
4,Nginx配置实例2-负载均衡
4.1,在http块中配置
http{
......
upstream myserver{ #负载均衡服务器,转发的服务器
server 192.168.0.31:8080;
server 192.168.0.31:8081;
}
server {
listen 80;
server_name 192.168.0.31;
location / {
proxy_pass http://myserver;
}
......
}
4.2,Nginx负载均衡策略
1,轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果有服务器挂掉,则自动剔除;
2,weight
代表权重,默认为1,权重越高,被分配的客户端越多;
upstream myserver{
server 192.168.0.31:8080 weight 5;
server 192.168.0.31:8081 weight 10;
}
3,ip_hash
每个请求按访问ip的hash结果分配,这样每个固定访问一个后端服务器,可以解决session问题;
upstream myserver{
ip_hash;
server 192.168.0.31:8080 ;
server 192.168.0.31:8081 ;
}
4,fair(第三方)
按照后端服务器响应时间来分配请求,响应时间短越优先分配;
upstream myserver{
server 192.168.0.31:8080 ;
server 192.168.0.31:8081 ;
fair;
}
5,Nginx配置实例3-动静分离
location /www/ {
root /static_file/;
index index.html index.htm;
}
location /image/ {
root /static_file/;
autoindex on;
}
测试结果
http://192.168.0.31/image/13.jpg
http://192.168.0.31/www/a.html
6,Nginx + keepalived搭建Nginx高可用集群
6.1,keepalived介绍
参考官网:https://www.keepalived.org/index.html
Keepalived 是一个用 c 编写的路由软件。这个项目的主要目标是为 Linux 系统和基于 Linux 的基础架构提供简单而健壮的负载平衡和高可用性设施。负载平衡框架依赖于广泛使用的 Linux Virtual Server (IPVS)内核模块,提供了 Layer4负载平衡。Keepalived 实现了一组检查器,根据负载均衡服务器池的健康状况动态地、自适应地维护和管理它们。另一方面通过 VRRP 协议实现高可用性。VRRP 是路由器故障转移的基本单元。此外,Keepalived 实现了一组连接到 VRRP 有限状态机的钩子,提供低级和高速的协议交互。为了提供最快的网络故障检测,Keepalived 实现了 BFD 协议。VRRP 状态转换可以考虑 BFD 提示驱动快速状态转换。Keepalived 框架可以单独使用,也可以一起使用,以提供弹性基础架构。
1,安装部署
官方地址 keepalived 下载地址,选择指定的版本后我们就开始下载
## 下载
wget https://www.keepalived.org/software/keepalived-2.2.0.tar.gz
## 解压缩
tar -zxvf keepalived-2.2.0.tar.gz
## 创建安装目录
mkdir -p /usr/local/keepalived
## 进行configure配置,指定安装目录:
cd keepalived-2.2.0 && ./configure --prefix=/usr/local/keepalived/
## 编译安装
make && make install
安装编译过程报错
WARNING - this build will not support IPVS with IPv6. Please install libnl/libnl-3 dev libraries to support IPv6 with IPVS.
解决办法:安装环境依赖
yum -y install libnl libnl-devel
安装完以后重新执行configure
./configure --prefix=/usr/local/keepalived
2,Keepalived相关配置文件(重点)
7,Nginx执行原理
1,master 和 worker 两个进程
2,一个master和多个worker的好处
(1),可以使用 nginx -s reload 进行热部署,利用nginx进行热部署操作;
(2),woker是独立进程,某个woker挂掉也不会造成服务中断;无需加锁,省去加锁开销;
3,设置多少个woker才是最合适的
(1)nginx采用io多路复用机制
(2)worker数和 服务器的 cpu 数相等最为合适。
4,连接数 worker_connection
(1) 第一个:发送请求,占用了worker的几个连接数 2个或4个
(2)第二个,nginx有一个master,4个worker,每个worker最大连接数时候1024,支持的最大并发数是多少?
(3)普通静态访问:worer_connections * worker_process / 2
(4)http作为反向代理:worer_connections * worker_process / 4
以上是关于Nginx+Keepalived入门到实战(持续更新......)的主要内容,如果未能解决你的问题,请参考以下文章
Keepalived+Nginx反向代理检测集群节点状态企业实战