文章目录

  • 一、写在前面
    • 编译下载
    • nginx.conf文件解析
    • 安装好后的操作
    • 日志问题,不同级别的错误
  • 二、环境搭建学习
    • web服务器配置
    • 错误页面跳转
    • IO多路复用
    • 在nginx里部署https服务
    • 如何查看网卡的流量?
  • 三、搭建web集群
    • 基本配置和原理
      • realip模块在nginx中的实现
      • 数据一致性问题
      • SAN/ NAS和云存储
      • 自定义一个4层的负载均衡
    • 测试和调度算法
      • keepalived 效果测试
      • 健康检测
      • 负载均衡调度算法
      • 调优
      • 压力测试(ab工具)
      • io调度算法
      • 自定义一个4层的负载均衡
    • dns解析
      • 搭建dns正向解析(bind)
      • 搭建一个dns反向解析系统
    • web的其他实现
      • 转发器
      • 隐藏版本
      • 状态统计
      • 下载功能实现

一、写在前面

nginx是十分轻量级的HTTP服务器。是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器。

了解nginx的基本操作
nginx一键安装脚本:https://blog.csdn.net/m0_59371732/article/details/126162978?spm=1001.2014.3001.5501
按步骤操作如下:

编译下载

curl -O http://nginx.org/download/nginx-1.22.0.tar.gz  下载

​ 将已经编译好的二进制程序安装到指定的路径 make install

nginx.conf文件解析

  • 工作进程的数量,与cpu数量相同即可,使用top命令按1查看
#user  nobody;
worker_processes  2;
  • 错误日志的地址
#error_log  logs/error.log;
error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
  • 指定安装路径
  --prefix=PATH         set installation prefix
  • 建立长连接(http模块)
  keepalive_timeout  65;
  • 网站首页位置,/代表当前
  location / {root   html;index  index.html index.htm;}
  • 运行改代码 添加需要的模块等
./configure --prefix=/usr/local/jay-zhou99  --user=jay-zhou --group=jay-zhou --with-http_ssl_module   --with-threads  --with-http_v2_module  --with-http_stub_status_module  --with-stream --with-http_gunzip_module

安装好后文件显示

[root@VM-12-8-centos nginx-1.22.0]# cd /usr/local/jay-zhou99/
[root@VM-12-8-centos jay-zhou99]# ls
conf  html  logs  sbin

安装好后的操作

conf  存放nginx的配置的文件html   存放网站的网页的目录logs   存放日志sbin   存放nginx的启动程序的```shell
[root@VM-12-8-centos html]# ls
50x.html  index.html

index.html 首页文件 :进入某个网站看到的第一个页面

链接:通过首页里的链接跳到其他的页面

修改环境变量 可以在任何地方使用nginx 命令直接启动

[root@VM-12-8-centos sbin]# PATH=/usr/local/jay-zhou99/sbin/:$PATH

把这个脚本的变量放到当前终端运行,不会去产生一个子进程

source  /root/.bashrc

停掉nginx进程

[root@VM-12-8-centos ~]# ps aux|grep nginx
或者使用kill  -9  ,先杀死master的那个nginx进程
  • 防火墙的设置

立即关闭防火墙,只是暂时

[root@VM-12-8-centos nginx_d]# service firewalld stop

永久关闭防火墙,下次开机时生效

[root@VM-12-8-centos nginx_d]# systemctl disable firewalld

查看防火墙状态

service filewalld status

日志问题,不同级别的错误

0最高

loglevel
The kernel log levels are:
0 (KERN_EMERG)
The system is unusable.
1 (KERN_ALERT)
Actions that must be taken care of immediately.
2 (KERN_CRIT)
Critical conditions.
3 (KERN_ERR)
Noncritical error conditions.
4 (KERN_WARNING)
Warning conditions that should be taken care of.
5 (KERN_NOTICE)
Normal, but significant events.
6 (KERN_INFO)
Informational messages that require no action.
7 (KERN_DEBUG)  调试模式: 程序执行的整个过程都记录,方便开发者调试程序Kernel debugging messages, output by the kernel if the developer enabled debugging at compile time.
==0 EMERG.  emergency 紧急  --》系统不能使用了
1 ALERT.  告警
2 CRIT.   严重 Critical
3 ERR.     程序因为某个错误导致不能运行,只要是error以上的级别都会导致程序启动或者是运行失败
4 WARNING. 警告 ,不会影响程序的正常运行,只是提醒而已
5 NOTICE.  正常的记录,有点影响力的事件
6 INFO.    普通的信息都记录
7 DEBUG.  调试模式,什么都记录

二、环境搭建学习

web服务器配置

(本章是在云服务器上学习用的)
1、在配置文件里修改配置,新建3个虚拟主机

nginx.conf 新添加的server

一个server对应一个网站 -----》虚拟主机 (只截取了一个server)

server{listen 80;server_name www.liang.com;location / {root html/liang;index index.html index.htm shouye.html #首页文件优先级,先从做左边}       access_log  logs/liang_access.log  main; #访问日志error_log logs/liang_error.log notice; #错误日志
}

2、添加好后 新建各个虚拟主机对应的网页根目录,并且新建首页

[root@VM-12-8-centos jay-zhou99]# cd html
[root@VM-12-8-centos html]# pwd
/usr/local/jay-zhou99/html
[root@VM-12-8-centos html]#
[root@VM-12-8-centos html]# tree
.
|-- 50x.html
|-- hejin
|   `-- he.html
|-- index.html
|-- jay.jpg
|-- liang
|   `-- index.html    在index.html 中输入想在网页上看到的内容
|-- lili
|   `-- index.html
`-- tian`-- index.html

3、重启nginx服务

nginx -s reload

4、域名解析

​ 拿我们的nginx服务器做客户,修改/etc/hosts 添加对应的域名

写入/etc/hosts 文件

1.14.183.210 www.liang.com
1.14.183.210 www.tian.com
1.14.183.210 www.lili.com

5、测试访问

访问的域名不一样,然会的内容也不一样

[root@VM-12-8-centos html]# curl www.lili.com
liyili cool
[root@VM-12-8-centos html]# curl www.liang.com
liangrui bingo
[root@VM-12-8-centos html]# 

(在windows里改hosts文件

     C:\Windows\System32\drivers\etc

改不了的话把hosts文件移到桌面上修改,然后再移回去

# 以下为 kafka的
192.168.10.160  www.sc.com
192.168.10.157  www.sc.com
192.168.10.161  www.sc.com# 以下为学习linux加的
# 是基于域名的虚拟主机  ,此种要好些,公用一个ip,共用一个端口
1.14.183.210   www.liang.com
1.14.183.210   www.tian.com
1.14.183.210   www.lili.com

错误页面跳转

浏览器访问错误页面 访问的www.qq.com/liang 跳出一个404错误页面和公益广告
https://www.qq.com/404page.html

1、自己写一个错误的页面

此为配置文件中的错误 处理,可以编写一个404文件

  error_page  404              /404.html;

[root@VM-12-8-centos html]# ls
50x.html  hejin  index.html  jay.jpg  liang  lili  tian
[root@VM-12-8-centos html]# vim 404.html

[root@VM-12-8-centos html]# cat 404.html
<html><head><title>404 page not found</title>
</head>
<body><p>page not found<p><h3>admin:liangrui  16609165839</h3>  (h为加粗)<p><img src=jay.jpg width=200>
</body>
</html>

2、然后加到server中,使用www.liang.com/***访问看是否会出现那个错误页面

server {listen 80;server_name www.liang.com;location / {root html/liang;                        index index.html index.htm shouye.html;  #首页文件优先级,先从做左>边              }error_page  404              /404.html;access_log  logs/liang_access.log  main; #访问日志error_log logs/liang_error.log notice; #错误日志 }

3、打开浏览器没有那个效果,打开日志排错

2022/07/22 19:35:24 [error] 15159#15159: *434 open() "/usr/local/jay-zhou99/html/liang/404.html" failed (2: No such file or directory), client: 222.244.221.23, server: www.liang.com, request: "GET /ww HTTP/1.1", host: "www.liang.com"

html 文件放的不对,要放到这个文件下面去


/usr/local/jay-zhou99/html/liang/404.html"

4、加了一行跳转的页面。5秒后自动跳转

<html><head><title>404 page not found</title><meta http-equiv="refresh" content="5";url="http://www.bilibili.com">
</head>
<body><p>page not found<p><h3>admin:liangrui  16609165839</h3><p><img src=jay.jpg width=200>
</body>
</html>

5、错误页面效果如下

5秒后跳转至bilibili

www.liang.com:8080 (冒号后面加端口,表示访问哪个端口)

IO多路复用

解决高并发的问题
1、select 和 epoll

select单个进程可监视的fd数量受到限制,epoll和select都可实现同时监听多个I/O事件的状态。

  • select 基于轮训机制
  • epoll基于操作系统支持的I/O通知机制 epoll支持水平触发和边沿触发两种模式。

lsof -p 加进程号 查看该进程打开了哪些文件 (p---->pid)

[root@VM-12-8-centos conf]# ps aux |grep nginx
root      4793  0.0  0.1  50196  3084 ?        Ss   Jul19   0:00 nginx: master process nginx
jay-zhou 29738  0.0  0.1  52280  2356 ?        S    22:02   0:00 nginx: worker process
jay-zhou 29739  0.0  0.1  52280  2356 ?        S    22:02   0:00 nginx: worker process
root     29791  0.0  0.0 115928  1016 pts/1    S+   22:02   0:00 grep --color=auto nginx
[root@VM-12-8-centos conf]# lsof -p 29738
COMMAND   PID     USER   FD      TYPE             DEVICE SIZE/OFF    NODE NAME
nginx   29738 jay-zhou  cwd       DIR              253,1     4096  393219 /root
nginx   29738 jay-zhou  rtd       DIR              253,1     4096       2 /
[root@VM-12-8-centos conf]# lsof -p 29738|grep poll
nginx   29738 jay-zhou   14u  a_inode               0,10        0    6394 [eventpoll]
[root@VM-12-8-centos conf]#

2、 IO多路复用用的哪个模型?
50x的状态码,代表是nginx的内部错误

​ 例如:nginx的内部的限制,nginx连接数达到了极限,不能允许其他的人再连接进来

​ nginx对客户端进行了限制(连接数,请求数等)

        error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;   指定根目录在html下面}

一些的限制

这一行放http里面 (控制一秒钟访问的次数)(可以防止爬虫)
limit_req_zone $binary_remote_addr zone=perip:10m rate=1r/s;这一行放server里
limit_req zone=perip burst=5 nodelay;  (burst表示峰值)

放在了server的liang里面 (zone表示名字)

                }error_page  404              /404.html;access_log  logs/liang_access.log  main; #访问日志error_log logs/liang_error.log notice; #错误日志 limit_req zone=perip burst=1 nodelay;}

在nginx里部署https服务

1、到阿里云去申请免费的证书digicert类型的免费证书,可以使用1年,下载下来

2、上传下载的证书到nginx服务器的conf目录下

[root@VM-12-8-centos conf]# ls
7318014_sanchuangedu.cn_nginx.zip  koi-win             scgi_params.default
fastcgi.conf                       mime.types          uwsgi_params
fastcgi.conf.default               mime.types.default  uwsgi_params.default
fastcgi_params                     nginx.conf          win-utf
fastcgi_params.default             nginx.conf.default
koi-utf                            scgi_params
[root@VM-12-8-centos conf]# [root@VM-12-8-centos conf]# unzip 7318014_sanchuangedu.cn_nginx.zip
Archive:  7318014_sanchuangedu.cn_nginx.zip
Aliyun Certificate Downloadinflating: 7318014_sanchuangedu.cn.pem  inflating: 7318014_sanchuangedu.cn.key
[root@VM-12-8-centos conf]# ls
7318014_sanchuangedu.cn.key        fastcgi_params.default  nginx.conf.default
7318014_sanchuangedu.cn_nginx.zip  koi-utf                 scgi_params
7318014_sanchuangedu.cn.pem        koi-win                 scgi_params.default
fastcgi.conf                       mime.types              uwsgi_params
fastcgi.conf.default               mime.types.default      uwsgi_params.default
fastcgi_params                     nginx.conf              win-utf
[root@VM-12-8-centos conf]#

7318014_sanchuangedu.cn.key 私钥

7318014_sanchuangedu.cn.pem 公钥

3、修改配置文件,启用https服务

    server {listen       443 ssl;server_name  localhost;ssl_certificate      cert.pem;ssl_certificate_key  cert.key;ssl_session_cache    shared:SSL:1m;ssl_session_timeout  5m;ssl_ciphers  HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers  on;location / {root   html;index  index.html index.htm;}}

如何查看网卡的流量?

​ dstat,glances,iftop

[root@VM-12-8-centos ~]# dstat -N eth0 -am
Terminal width too small, trimming output.
----total-cpu-usage---- -dsk/total- --net/eth0- ---paging-- ---system-->
usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw >0   1  99   0   0   0| 925B   20k|   0     0 |   0     0 | 657  1188 >0   1 100   0   0   0|   0     0 | 258B 2472B|   0     0 | 700  1278 >0   0  99   0   0   0|   0     0 |  54B   54B|   0     0 | 567  1040 >^C
[root@nginx-kafka03 ~]# glancesnginx-kafka03.localdomain                                                 Uptime: 1:33:39CPU  [  1.8%]   CPU       1.8%      MEM     20.4%      SWAP      0.0%      LOAD    2-core
MEM  [ 20.4%]   user:     0.8%      total:  1.78G      total:   2.00G      1 min:    0.01
SWAP [  0.0%]   system:   0.6%      used:    372M      used:        0      5 min:    0.02idle:    98.5%      free:   1.41G      free:    2.00G      15 min:   0.05NETWORK     Rx/s   Tx/s   TASKS 108 (131 thr), 1 run, 107 slp, 0 oth sorted automatically
ens33       152b    2Kb
lo          704b   704b     CPU%  MEM%   PID USER        NI S Command 3.5   0.8  7702 root         0 R /usr/bin/python /usr/bin/gl
DISK I/O     R/s    W/s      1.3   0.3  7081 root         0 S sshd: root@pts/0
dm-0           0      0      0.3   0.0     9 root         0 S rcu_sched
dm-1           0      0      0.0   0.0    18 root         0 S kdevtmpfs
sda            0      0      0.0   0.0    19 root       -20 S netns

如何插卡应用程序消耗了多少流量

nethogs

三、搭建web集群

基本配置和原理

步骤:

​ 0.、先规划好网络中的网络拓扑图,将网络的ip地址规划好
​ 1、先把后端的web服务器上的nginx安装好----一键安装脚本
​ 2、在一台安装负载均衡器上的nginx,使用nginx来实现负载均衡功能
​ 3、配置负载均衡功能 学习官网知识:http://nginx.org/en/docs/http/load_balancing.html

准备:6台虚拟机,2台做负载均衡器,3台web服务器web服务器,1台nfs服务器。

  • 在负载均衡器上使用nginx一键安装脚本安装好后,为方便操作,远程copy到另外两台服务器
[root@localhost ~]# scp onekey_install_nginx.sh 192.168.10.162:/root
root@192.168.10.162's password:
onekey_install_nginx.sh                                100% 1225   822.0KB/s   00:00
[root@localhost ~]#
[root@localhost ~]# scp onekey_install_nginx.sh 192.168.10.163:/root
The authenticity of host '192.168.10.163 (192.168.10.163)' can't be established.
ECDSA key fingerprint is SHA256:pHm8JEf6+lS80HS+lS6ldixoQvD3tE83f6BIx344KPI.
ECDSA key fingerprint is MD5:e2:56:38:3f:dd:bc:2c:cc:10:d7:1a:fd:64:8d:07:8e.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.10.163' (ECDSA) to the list of known hosts.
root@192.168.10.163's password:
onekey_install_nginx.sh                                100% 1225   799.0KB/s   00:00
[root@localhost ~]#

安装好后使用 su 命令重新登入服务。
2、负载均衡器的配置

  • 修改主机名
[root@localhost ~]# hostnamectl set-hostname lb
[root@localhost ~]# su
\[root@lb ~]#
  • 修改负载均衡器的那台nginx.conf文件
    # 定义一个负载均衡器  命名 scappupstream scapp{server  192.168.10.162;server  192.168.10.163;}location / { (写在server里)proxy_pass http://scapp; # 代理服务器proxy_set_header X-Real-IP  $remote_addr;  # 代理到真实服务器的ip}#    root   html;#   index  index.html index.htm;}
  • 检查语法并重新加载nginx
[root@lb conf]# nginx -t
nginx: the configuration file /usr/local/jay-zhou/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/jay-zhou/conf/nginx.conf test is successful
[root@lb conf]# nginx -s reload
[root@lb conf]#

2、修改real server

log_format  main  '$remote_addr - $http_x_real_ip - $remote_user [$time_local]   (加入$http_x_real_ip web服务器的ip)
  • 然后从浏览器访问nginx的ip地址。查看real server的access.log

日志格式中:负载均衡器的ip服务器的ip
(反向代理将数据转发给了web服务器)

realip模块在nginx中的实现

realip模块的作用是:当本机的nginx处于一个反向代理的后端时获取到真实的用户IP。

思考:
后端的real server不知道前端真正访问的ip地址,只是知道负载均衡的ip地址,如何让后端的real server知道前端真正的用户的ip地址?

方法一、后端real server 不使用realip模块

步骤1:在负载均衡器上修改http请求报文头部字段,添加一个X-Real-IP字段

server {
listen 80;
server_name www.sanchuangedu.cn;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
# root html;
# index index.html index.htm;
proxy_pass http://scapp; # 代理服务器
proxy_set_header X-Real-IP $remote_addr;
}

步骤2:步骤2:在后端real server上使用这个x_real_ip这个字段

log_format main '$remote_addr - $http_x_real_ip - remoteuser[remote_user [remoteu​ser[time_local] “KaTeX parse error: Double superscript at position 31: … '̲status bodybytessent"body_bytes_sent "bodyb​ytess​ent"http_referer” ’
‘“httpuseragent""http_user_agent" "httpu​sera​gent""http_x_forwarded_for”’;

方法二、

提前条件,需要在后端的backend服务器上在编译安装nginx的时候,需要接 --with-http_realip_module 开启这个功能

步骤1、在负载均衡器上修改http请求报文头部字段,添加一个X_REAL_IP字段

server {listen       80;server_name  www.sc.com;location / {proxy_pass http://myweb1;proxy_set_header   X-Real-IP        $remote_addr;}}

将nginx内部的remote_addr这个变量的值,赋值给X-Real-IP这个变量,X-Re al-IP这个变量会在http协议的请求报文里添加一个X-Real-IP的字段,后端的real server 服务器上的nginx就可以读取这个字段的值
X-Real-IP 这个变量名可以自己定义,随便取名,后面引用的时候,不区分大小写

步骤2:在后端real server上使用set_real_ip_from 192.168.0.160

server{listen 80;set_real_ip_from 192.168.0.160;

set_real_ip_from 192.168.0.160; 告诉本机的nginx 192.168.0.160 是负载均衡器,不是真正的client

数据一致性问题

使用nfs,让backend服务器都到nfs服务器里获取数据,这样就可以达到数据一致性,随便访问哪台都是一样的

NFS是一种基于TCP/IP 传输的网络文件系统协议。通过使用NFS协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源

(自行了解nfs的工作原理)

1、搭建nfs服务器

​ yum install nfs-utils -y

​ service nfs restart

​ vim /etc/exports

[root@localhost ~]# cat /etc/exports
/data  192.168.10.165/24(rw,no_root_squash,no_all_squash,sync)
[root@localhost ~]# mkdir /data
[root@localhost ~]# exportfs -r

查看nfs是否打开

[root@localhost ~]# ss -anplutp
udp    UNCONN     0      0                                                     *:1022                                                              *:*                   users:(("rpcbind",pid=1695,fd=7))

nfs没有自己去监听某个端口,而是外包给rpcbind相关的服务的

2、backend服务器挂载到nfs共享的目录获取数据

SAN/ NAS和云存储

SAN/ NAS

存储区域网络 (Storage Area Network, SAN) 是企业最常用的存储网络架构,要求高吞吐量和低延迟的业务关键型业务往往采用这类架构运行。

(光纤、光纤交换机、hba卡,磁盘阵列)

NAS(Network Attached Storage:网络附属存储)按字面简单说就是连接在网络上,具备资料存储功能的装置,因此也称为“网络存储器”。它是一种专用数据存储服务器。

云存储

单点故障: 某些重要的应用,只有1个节点,如果这个节点出现故障,导致服务不可用。

高可用: high availability :至少有2个以上的节点提供服务,避免单点故障
灾备—》多搞几台机器–》成本会增加

master :主要的,对外提供服务的
backup :备份的,不对外提供服务,在master是好的情况下。一旦master挂了,backup马上就会接替master的工作,成为master

高可用的软件:keepalived 、HA Proxy、heartbeat

keepalived (开源免费)

keepalived 两个功能

1、HA

2、loadbalance – lvs

自定义一个4层的负载均衡

(去掉http模块)

stream {#负载均衡器的定义webupstream web-servers {server 192.168.10.163:80;server 192.168.10.162:80;}#负载均衡器的定义dnsupstream dns_servers {hash   $remote_addr consistent;server 192.168.10.163:53;server 192.168.10.162:53;}
server {listen     80;  # 使用的tcpproxy_pass web-servers;}
server {listen     53 udp;proxy_pass dns_servers;}
}

四层负载均衡和七层负载均衡

四层速度快,支持的服务数量多(http、dns、ftp、mysql等)

:虚拟路由冗余协议

路由器故障转移的基础
vip —virtual ip(对外提供服务的ip )

测试和调度算法

keepalived 效果测试

1.安装keepalived软件

[root@lb ~]# yum install keepalived -y
[root@lb2 ~]# yum install keepalived -y

2.配置keepalived.conf文件,添加vip和相关信息

[root@lb ~]# cd /etc/keepalived/
[root@lb keepalived]# ls
keepalived.conf
[root@lb keepalived]# [root@lb keepalived]# vim keepalived.conf

#vrrp_strict 注释掉

vrrp_instance VI_1 {       启动一个vrrp的实例 VI_1 实例名,可以自定义state MASTER        --》角色是master ,另一台改为backupinterface ens33      --》在哪个接口上监听vrrp协议,同时绑定vip到那个接口virtual_router_id 105 --》虚拟路由id(帮派) 0~255范围priority 120    ---》优先级  0~255   master高于backupadvert_int 1  --》advert interval 宣告消息 时间间隔 1秒authentication {   认证auth_type PASS   认证的类型是密码认证auth_pass 11112222   具体的密码,可以自己修改}virtual_ipaddress {   --》vip的配置,vip可以是多个ip192.168.200.16 192.168.200.17192.168.200.18}
}

2、启动keepalived

[root@lb keepalived]# systemctl start keepalived
[root@lb keepalived]# ps aux|grep keepalived
root       1320  0.0  0.1 123012  1400 ?        Ss   16:13   0:00 /usr/sbin/keepalived -D
root       1321  0.0  0.3 133984  3404 ?        S    16:13   0:00 /usr/sbin/keepalived -D
root       1322  0.0  0.2 133852  2664 ?        S    16:13   0:00 /usr/sbin/keepalived -D
root       1334  0.0  0.0 112824   988 pts/0    R+   16:13   0:00 grep --color=auto keepalived

使用ip add查看后,出现虚拟ip地址,192.168.10.170,同一时间,vip只会出现在master上,

当关掉master的机器后,vip会在backup上

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:99:b6:ed brd ff:ff:ff:ff:ff:ffinet 192.168.10.164/24 brd 192.168.10.255 scope global noprefixroute ens33valid_lft forever preferred_lft foreverinet 192.168.10.170/32 scope global ens33valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fe99:b6ed/64 scope link valid_lft forever preferred_lft forever
[root@lb keepalived]#

浏览器访问虚拟ip,出现的是后端服务器的页面


只配置一个实例的话,会出现另一台长时间闲置的问题。为了提高资源利用率,增加一个实例实现双vip互为主备。

vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 166priority 200advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.10.170#192.168.200.17#192.168.200.18}
}vrrp_instance VI_2 {state BACKUPinterface ens33virtual_router_id 167priority 120advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.10.171#192.168.200.17#192.168.200.18}
}

然后重启keepalived

[root@lb2 keepalived]# vim keepalived.conf
[root@lb2 keepalived]# systemctl restart keepalived
[root@lb2 keepalived]#

第一台为

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:99:b6:ed brd ff:ff:ff:ff:ff:ffinet 192.168.10.164/24 brd 192.168.10.255 scope global noprefixroute ens33valid_lft forever preferred_lft foreverinet 192.168.10.170/32 scope global ens33valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fe99:b6ed/64 scope link valid_lft forever preferred_lft forever
[root@lb keepalived]#

第二台为

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:cc:d5:a3 brd ff:ff:ff:ff:ff:ffinet 192.168.10.167/24 brd 192.168.10.255 scope global noprefixroute ens33valid_lft forever preferred_lft foreverinet 192.168.10.171/32 scope global ens33valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fecc:d5a3/64 scope link valid_lft forever preferred_lft forever
[root@lb2 keepalived]#

dns 将两个vip轮询解析,实现高可用

脑裂:就是两台或者多台上都有vip地址

​ 原因:1、防火墙阻止了keepalived的vrrp消息的宣告,都认为自己是master

​ 2、virtual_router_id 不一样的时候

健康检测

healthchecker 是检查后端的real server是否宕机,如果出问题了,keep alived在做负载均衡的时候,就不再给这个服务器转发请求

健康检查是检查后端服务器是否存活

keepalived有三个进程,一个负责vrrp高可用,两个负责负载均衡

虚拟路由冗余协议
virtual router redundancy protocol

科来网络抓包分析:vrrp没有源地址和目的地址,这个借助ip协议(互联网协议)

linux的tcpdump也可以

 dcpdump  -i  ens33  vvrp  vv  -n

思考:
负载均衡器怎么知道后端服务器挂了呢

1、主动检查

Active Health Checks 主动的健康检查,LB每隔一段时间就去检查下后端的real server的状态,不管是否有client发请求过来,都会去检查。

需要安装nginx plus(需要购买)

2、被动检查(默认)

Passive Health Checks 被动的健康检查: 当client发请求给LB,然后LB再去转发请求给后端的real server ,这个时候如果后端的服务器出现问题,LB就发现了。被客户机逼着去检查后端的real server

网络解释:操作系统管理了系统的有限资源,当有多个进程(或多个进程发出的请求)要使用这些资源时,因为资源的有限性,必须按照一定的原则选择进程(请求)来占用资源。这就是调度。目的是控制资源使用者的数量,选取资源使用者许可占用资源或占用资源。

负载均衡调度算法

1、round robin

2、Least Connections (最小连接数)

3、ip_hash

4、gendric hash

5、least time

6、random

调优:
1.硬件调优: 加内存,换ssd磁盘,换网卡等上好设备 --》效果显著,简单粗暴
2.系统调优
操作系统调优:内核,io调度,网络,swap分区,文件描述符
应用软件调优:nginx,ssh,MySQL等
3.SQL的调优
4.代码调优
5.架构的调优: 加缓存,中间件,搞集群,加CDN等

调优

nginx的调优:
1.参数优化

​ ulimit -n 10000-----》linux内核参数的调优 ----》文件描述符—》进程

​        worker_connections  2048;
​        worker_processes  2;
​        keepalive_timeout  65;
​        proxy_buffer_size 16k;

​ 2.功能开启或者关闭
​ 关闭不需要模块,开启需要的模块,安装更加好的插件

腾讯云服务器的内核参数调优

[root@VM-12-8-centos ~]# sysctl -p   让内核读取sys
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
net.ipv4.conf.all.promote_secondaries = 1
net.ipv4.conf.default.promote_secondaries = 1
net.ipv6.neigh.default.gc_thresh3 = 4096
net.ipv4.neigh.default.gc_thresh3 = 4096
kernel.softlockup_panic = 1
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0
kernel.shmmax = 68719476736
kernel.printk = 5
kernel.sysrq = 1
kernel.numa_balancing = 0
[root@VM-12-8-centos ~]#
[root@VM-12-8-centos ~]# vim /etc/sysctl.conf  具体参数在这个文件# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.

调优:
1.硬件调优: 加内存,换ssd磁盘,换网卡等上好设备 --》效果显著,简单粗暴
2.系统调优
操作系统调优:内核,io调度,网络,swap分区,文件描述符
应用软件调优:nginx,ssh,MySQL等
3.SQL的调优
4.代码调优
5.架构的调优: 加缓存,中间件,搞集群,加CDN等

(单台电脑调优)

压力测试(ab工具)

对整个系统进行测试–》看整个服务器集群能承受多少的访问量。

使用一个软件模拟一万个访问去测试服务器集群的性能

软件:ab — yum install httpd-tools -y
访问之前写的博客
web服务器压力测试工具—ab_也没有余粮的博客

TPS:Transactions Per Second(每秒传输的事物处理个数),即服务器每秒处理的事务数。TPS包括一条消息入和一条消息出,加上一次用户数据库访问。(业务TPS = CAPS × 每个呼叫平均TPS) ----- 数据库

QPS:每秒查询率QPS是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准,在因特网上,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。 ---- web、dns

IOPS :衡量我们的数据库系统或者磁盘的性能

io调度算法

deadline调度(最终期限调度)

cfq(完全公平队列调度)

[root@lb ~]#  cat /sys/block/sda/queue/scheduler
noop [deadline] cfq
[root@lb ~]#

ab 命令中,-n表示请求数,-c表示并发数

(模拟100个人同时访问1000次)

[root@lb ~]# ab -n 1000 -c 100  http://192.168.10.164/ 对负载均衡器进行测试
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.orgBenchmarking 192.168.10.164 (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requestsConcurrency Level:      100    并发请求数
Time taken for tests:   0.363 seconds    整个测试持续的时间
HTML transferred:       612000 bytes
Requests per second:    2753.71 [#/sec] (mean)   吞吐率  (QPS)
Time per request:       36.315 [ms] (mean)    用户平均请求等待时间
Time per request:       36.315 [ms] (mean)    服务器平均请求处理时间
Time per request:       0.363 [ms] (mean, across all concurrent requests)

使用glances命令查看后台服务器的cpu 带宽使用情况

自定义一个4层的负载均衡

(去掉http模块)

stream {#负载均衡器的定义webupstream web-servers {server 192.168.10.163:80;server 192.168.10.162:80;}#负载均衡器的定义dnsupstream dns_servers {hash   $remote_addr consistent;server 192.168.10.163:53;server 192.168.10.162:53;}
server {listen     80;  # 使用的tcpproxy_pass web-servers;}
server {listen     53 udp;proxy_pass dns_servers;}
}

四层负载均衡和七层负载均衡

四层速度快,支持的服务数量多(http、dns、ftp、mysql等)

dns解析

搭建dns正向解析(bind)

缓存域名服务器的搭建-----(安装软件,修改配置)

1.安装软件bind,bind是历史非常悠久,而且性能非常好的dns域名系统的软件
The Berkeley Internet Name Domain (BIND) DNS (Domain Name System) server

[root@lb keepalived]# yum install bind -y
已加载插件:fastestmirror
[root@lb keepalived]# yum install bind-utils -y

bind --》提供是dns服务的软件
bind-utils 提供很多的域名查询的命令的软件 ,dig,nslookup

(要提前关闭防火墙和selinux)

2.设置named服务开机启动,并且立马启动DNS服务
name deamon --》named 提供域名服务的进程的名字
守护进程: 一直在内存里运行的,除非人为的停止

[root@lb1 ~]# rpm -qi bind  查询已经安装的软件的信息BIND (Berkeley Internet Name Domain) is an implementation of the DNS
(Domain Name System) protocols. BIND includes a DNS server (named),
which resolves host names to IP addresses; a resolver library
(routines for applications to use when interfacing with DNS); and
tools for verifying that the DNS server is operating properly.

3、设置开机启动

[root@lb keepalived]# systemctl start named
[root@lb keepalived]# systemctl enable named
Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.
[root@lb keepalived]#
[root@lb keepalived]# ps aux|grep named
named      1655  0.1  5.7 168300 57512 ?        Ssl  22:09   0:00 /usr/sbin/named -u named -c /etc/named.conf
root       1680  0.0  0.0 112824   984 pts/0    R+   22:10   0:00 grep --color=auto name
[root@lb keepalived]# netstat -anplut |grep named
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      1655/named
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      1655/named
tcp6       0      0 ::1:53                  :::*                    LISTEN      1655/named
tcp6       0      0 ::1:953                 :::*                    LISTEN      1655/named
udp        0      0 127.0.0.1:53            0.0.0.0:*                           1655/named
udp6       0      0 ::1:53                  :::*                                1655/named

(监听的53端口)(127.0.0.1:53 只给本机提供服务)

4.修改配置文件,重启服务器允许其他电脑能过来查询dns域名

[root@nameserver ~]# vim /etc/named.conf
options {listen-on port 53 { any; };  修改listen-on-v6 port 53 { any; }; 修改 或者删除directory       "/var/named";dump-file       "/var/named/data/cache_dump.db";statistics-file "/var/named/data/named_stats.txt";memstatistics-file "/var/named/data/named_mem_stats.txt";recursing-file  "/var/named/data/named.recursing";secroots-file   "/var/named/data/named.secroots";allow-query     { any; }; 修改

重启后

[root@lb etc]# netstat -anplut|grep named
tcp        0      0 192.168.10.170:53       0.0.0.0:*               LISTEN      1743/named
tcp        0      0 192.168.10.164:53       0.0.0.0:*               LISTEN      1743/named
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      1743/named
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      1743/named
tcp6       0      0 ::1:953                 :::*                    LISTEN      1743/named
udp        0      0 192.168.10.170:53       0.0.0.0:*                           1743/named
udp        0      0 192.168.10.164:53       0.0.0.0:*                           1743/named
udp        0      0 127.0.0.1:53            0.0.0.0:*                           1743/named          

5、修改resolv.conf文件 (重启网络后会失效,需要重新修改此文件)

[root@lb etc]# vim /etc/resolv.conf# Generated by NetworkManager#nameserver 114.114.114.114
#nameserver 192.168.10.2
nameserver 192.168.10.164

修改好之后可以给其他服务器做域名解析了

[root@lb etc]# ping www.baidu.com
PING www.a.shifen.com (14.215.177.39) 56(84) bytes of data.
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=1 ttl=128 time=44.1 ms
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=2 ttl=128 time=36.0 ms
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=3 ttl=128 time=205 ms
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=4 ttl=128 time=36.1 ms
[root@lb named]# iptables -A INPUT -p udp --dport 53 -j DROP  此命令可以开放53号端口,让别人访问进来

域名解析常用命令:nslookup、dig、ping、host

查看两个工具是从哪个软件安装来的

[root@lb etc]# which dig
/bin/dig
[root@lb etc]# rpm -qf /usr/bin/dig
bind-utils-9.11.4-26.P2.el7_9.9.x86_64
[root@lb etc]# which nslookup
/bin/nslookup
[root@lb etc]# rpm -qf /usr/bin/nslookup
bind-utils-9.11.4-26.P2.el7_9.9.x86_64
[root@lb etc]# 
[root@lb etc]# dig www.qq.com
www.qq.com.     300 IN  CNAME   ins-r23tsuuf.ias.tencent-cloud.net.
ins-r23tsuuf.ias.tencent-cloud.net. 120 IN A    121.14.77.221
ins-r23tsuuf.ias.tencent-cloud.net. 120 IN A    121.14.77.201
[root@lb etc]# host www.qq.com   (一个域名对应两个ip)
www.qq.com is an alias for ins-r23tsuuf.ias.tencent-cloud.net.
ins-r23tsuuf.ias.tencent-cloud.net has address 121.14.77.221
ins-r23tsuuf.ias.tencent-cloud.net has address 121.14.77.201
ins-r23tsuuf.ias.tencent-cloud.net has IPv6 address 2402:4e00:1020:1404:0:9227:71ab:2b74
ins-r23tsuuf.ias.tencent-cloud.net has IPv6 address 2402:4e00:1020:1404:0:9227:71a3:83d2
[root@lb etc]# 
[root@lb etc]# nslookup www.qq.com
Server:     192.168.10.164
Address:    192.168.10.164#53Non-authoritative answer:
www.qq.com  canonical name = ins-r23tsuuf.ias.tencent-cloud.net.
Name:   ins-r23tsuuf.ias.tencent-cloud.net
Address: 121.14.77.221
Name:   ins-r23tsuuf.ias.tencent-cloud.net
Address: 121.14.77.201
Name:   ins-r23tsuuf.ias.tencent-cloud.net
Address: 2402:4e00:1020:1404:0:9227:71ab:2b74
Name:   ins-r23tsuuf.ias.tencent-cloud.net
Address: 2402:4e00:1020:1404:0:9227:71a3:83d2[root@lb etc]#

dig命令可以看到dns域名解析过程

dig  +trace  www.baidu.com
13台根域名服务器
[root@lb named]# pwd
/var/named
[root@lb named]# 根域名服务器的存放在当前目录下的named.ca文件里,
a.root-servers.net. 518400  IN  A   198.41.0.4
b.root-servers.net. 518400  IN  A   199.9.14.201
c.root-servers.net. 518400  IN  A   192.33.4.12
.............


一个域名会有一个配置文件,还有一个数据文件

/etc/named.conf -->主配置文件
/etc/named.rfc1912.zones —>申请域名就是在这个文件里添加一段配置,例如:sanchuangedu.cn --》次要配置文件
zone 区域
/var/named/ --》存放数据文件的目录

7、配置一个自己的域名

[root@lb named]# vim /etc/named.rfc1912.zones   修改文件
zone "liangrui.com" IN {type master;file "liangrui.com.zone";allow-update { none; };
};
[root@lb named]# cd /var/named
[root@lb named]# cp named.localhost  liangrui.com.zone   -a
[root@lb named]# ll   (-a  表示复制的时候连同属性一起复制)
总用量 20
drwxrwx--- 2 named named   23 8月   6 22:09 data
drwxrwx--- 2 named named   60 8月   6 22:31 dynamic
-rw-r----- 1 root  named  152 6月  21 2007 liangrui.com.zone

dns的记录类型

A记录 address 域名–》ip
AAAA记录
MX 邮件交换记录 mail exchange --》指向你的邮件服务器
NS 域名服务器记录,指向你的dns服务器 name server
CNAME 别名记录

修改配置文件

[root@lb named]# cat liangrui.com.zone
$TTL 1D
@  IN SOA  @ rname.invalid. (0    ; serial1D  ; refresh1H ; retry1W   ; expire3H )    ; minimumNS @A 127.0.0.1AAAA   ::1
www A 192.168.10.162
www A 192.168.10.163
ftp A 192.168.10.164
web CNAME WWW   设置别名
#*  A 192.168.10.164    ;泛域名解析
#@  A 192.168.10.164  ;本域,例如:liangrui.com   baidu.com

再重启服务

使用域名解析命令,查看到效果如图

[root@lb named]# host www.liangrui.com
www.liangrui.com has address 192.168.10.162
www.liangrui.com has address 192.168.10.163
[root@lb named]# dig www.liangrui.com; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.9 <<>> www.liangrui.com
;; global options: +cmd
[root@lb named]# host web.liangrui.com
web.liangrui.com is an alias for WWW.liangrui.com.
www.liangrui.com has address 192.168.10.163
www.liangrui.com has address 192.168.10.162
[root@lb named]# 

搭建一个dns反向解析系统

反向解析: (ip解析为域名)

1.在配置文件里添加反向解析的zone

[root@lb named]# vim /etc/named.rfc1912.zones
添加下面的配置
zone "10.168.192.in-addr.arpa" IN {type master;file "192.168.10.zone";allow-update { none; };
};      

2、添加数据文件

[root@lb named]# cp -a named.loopback  192.168.10.zone
[root@lb named]# pwd
/var/named
[root@lb named]#
[root@lb named]# cat 192.168.10.zone
添加以下配置
164 IN  PTR ns1.liangrui.com.
162 IN  PTR www.liangrui.com.
163 IN  PTR ftp.liangrui.com.
[root@lb named]# service named restart
Redirecting to /bin/systemctl restart named.service
[root@lb named]# nslookup 192.168.10.164
164.10.168.192.in-addr.arpa name = ns1.liangrui.com.
反向解析测试成功!

web的其他实现

转发器

解释:将本地DNS服务器无法解析的查询,转发到网络上其它DNS服务器

转发到转发器的查询一般为递归查询


1、转发器的配置

[root@lb2 ~]# vim /etc/named.conf  lb2上搭建一个转发器
options {listen-on port 53 { any; };allow-query     { any; };
[root@lb2 ~]# systemctl restart named
[root@lb2 ~]# ping www.baidu.com
PING www.a.shifen.com (14.215.177.39) 56(84) bytes of data.
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=1 ttl=128 time=88.1 ms

----继续修改

[root@lb2 ~]# vim /etc/named.conf   添加如下配置allow-query     { any; };forward  first;forwarders { 192.168.10.130; 114.114.114.114; };
转发给第一台lb,或者转发给中国电信
[root@lb2 ~]# systemctl restart named

(lb2并没有配置liangrui.com 的域名,需要转发到lb1去解析)

!!结果:转发器没有给本地的dns服务器做解析

[root@lb2 ~]# ping www.liangrui.com
ping: www.liangrui.com: 未知的名称或服务
[root@lb2 ~]#
[root@lb2 ~]# dig www.liangrui.com +trace
.           518400  IN  NS  b.root-servers.net.
.           518400  IN  NS  k.root-servers.net.
couldn't get address for 'a.root-servers.net': not found

2、查找资料继续修改

[root@lb2 ~]# vim /etc/named.rfc1912.zones
添加如下配置,bind 1.9 新添加的设置
zone "liangrui.com" IN {type forward;forwarders { 192.168.10.164; };
};
[root@lb2 ~]# systemctl restart named
此方法还是失败

3、(此方法可行)

[root@lb named]# vim /etc/named.conf
include "/etc/named.rfc1912.zones";
//include "/etc/named.root.key";  注释这一行

解析成功
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HheKoIGV-1659963327317)(F:\大黄蜂\长津湖-web-大黄蜂版本\笔记\picture\image-20220807212615310.png)]

问题总结:配置过程中转发器没有做ip解析

​ 在本地dns服务器的配置文件里注释这条配置即可

//include "/etc/named.root.key";  注释这一行

隐藏版本

问什么要隐藏版本:为了安全考虑,防止黑客利用那个版本的漏洞攻击

[root@web1 conf]# vim nginx.conf
在http模块中添加server_tokens off;


使用浏览器检查效果如上,server版本被隐藏

状态统计

pv ----page view 页面浏览量 ----- 衡量页面是否繁忙

在nginx.conf 的server模块添加如下代码

        #访问192.168.10.132/status 返回nginx内部的状态统计location /status {stub_status;}
[root@web1 conf]# nginx -t
nginx: the configuration file /usr/local/jay-zhou/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/jay-zhou/conf/nginx.conf test is successful
[root@web1 conf]# nginx -s reload
[root@web1 conf]# 

浏览器查看

active connections 活跃的链接

server … 累计接受了多少客户端的


前面的数 表示,established ;超时时间65秒

waiting 表示请求页面之后,没有再访问,还在超时范围内的


linux系统查看nignx的链接状态为ESTABLISHED

以上数据存放在内存里。要想保存,可以写个脚本存入到数据库

使用命令实现

[root@web1 logs]# curl http://192.168.10.162/status 2>/dev/null|awk '/Active/{print $NF}'
1
[root@web1 logs]#
[root@web1 logs]# curl http://192.168.10.162/status 2>/dev/null|awk 'NR==3{print $NF}'
35   总请求次数

脚本实现拿到数据

认证模块

-----实现访问加密(别人访问你时属于用户名密码)

需要用到htpasswd命令,使用yum进行安装

[root@web1 logs]# yum install httpd-tools

然后创建文件htpasswd 用户名和密码

[root@web1 conf]# htpasswd -c /usr/local/jay-zhou/conf/htpasswd  liangrui
New password:
Re-type new password:
Adding password for user liangrui
[root@web1 conf]# cat htpasswd
liangrui:$apr1$kFVREPXh$nFE2ZeP0.9Y/ti2JjWnrv1    加密密码
[root@web1 conf]# 

在上面添加的status中修改

        #访问192.168.10.132/status 返回nginx内部的状态统计location /status {auth_basic "lr site";auth_basic_user_file htpasswd;stub_status;}

再次访问时效果如下:

下载功能实现

[root@web1 download]# cp /etc/passwd .
[root@web1 download]# tar czvf boot.tar.gz /boot  打包/boot 到当前目录
[root@web1 download]# pwd
/usr/local/jay-zhou/html/download
[root@web1 download]# echo 123 >>index.html
[root@web1 download]# cat index.html
123
[root@web1 download]# ls
boot.tar.gz  index.html  passwd
[root@web1 download]# mv index.html index.html.back
[root@web1 conf]# vim nginx.conflocation / {root   html;autoindex  on;  在根目录下添加这一行,开启下载功能index  index.html index.htm;

访问下载界面成功,可以利用此做一个文件服务器

基于nginx的高可用web集群相关推荐

  1. 项目 - 基于Docker Swarm的高可用Web集群

    目录 项目名称:基于Docker Swarm的高可用Web集群 项目环境:Docker 20.10.3,CentOS 8.2 (8台 1核1G),Ansible 2.9.17,Keepalived,N ...

  2. 03_项目-基于Docker Swarm的高可用Web集群

    文章目录 项目名称:基于Docker Swarm的高可用Web集群 网络拓扑图 数据流程图 项目环境:Docker 20.10.3,CentOS 8.2(8台 1核1G),Ansible 2.9.17 ...

  3. 项目名称:基于Docker Swarm的高可用Web集群

    文章目录 项目名称:基于Docker Swarm的高可用Web集群 网络拓扑图 数据流程图 项目环境:Docker 20.10.3,CentOS 8.2(8台 1核1G),Ansible 2.9.17 ...

  4. (七)centos7案例实战——nginx+keepalived高可用服务器集群搭建

    前言 本节内容延续之前的内容,往期博客已经介绍了如何安装nginx服务器以及将nginx安装成为一个系统服务,本节内容是在前期内容的基础上,搭建一个高可用的nginx服务器集群,主要使用Keepali ...

  5. 使用Docker Compose部署基于Sentinel的高可用Redis集群

    大家一定非常熟悉如何利用Docker启动单个Redis容器用于开发环境,本文将介绍如何利用Docker Compose模板在本机和云端部署基于Sentinel的高可用Redis 3集群. Redis集 ...

  6. corosync+pacemaker+crmsh的高可用web集群的实现

    网络规划: node1:eth0:172.16.31.10/16 node2: eth0: 172.16.31.11/16 nfs:   eth0: 172.16.31.12/15 注: nfs在提供 ...

  7. lvs+keepalived+nginx+tomcat高可用高性能集群部署

    为什么80%的码农都做不了架构师?>>>    2台前端 keepalived+lvs,热备的方式,保证一台lvs前端能正常访问就行,如果一台down,另外一台热备升级到master ...

  8. heartbeat v2版CRM的高可用web集群的实现

    接上一篇文章:heartbeat v1版CRM的高可用集群的实现 架构图: 网络地址规划: 一.关闭heartbeat服务 node1和node2都需要关闭: # service heartbeat ...

  9. heartbeat v1版CRM的高可用web集群的实现

    实验环境规划: 实验环境: CentOS release 6.6(Final)  三台 IP地址: Node1: eth0:172.16.31.10/16 Node2:  eth0:172.16.31 ...

最新文章

  1. python绘制直方图-python plotly绘制直方图实例详解
  2. win10系统中环境变量path变成一行显示(配置环境)
  3. OpenCV添加中文(五)
  4. 宠物商店 三层关系小结 显示宠物列表
  5. 小米(MIUI)系统组招聘职位
  6. EOS Platform 7.2 安装
  7. 跟我一起学docker(17)--多节点mesos集群
  8. 登录或连接MYSLQ 提示 error 1045 access denied for user 'root@127.0.0.1' 错误
  9. Windows由于在创建转储期间出错,创建转储文件失败导致的蓝底白字蓝屏重启,最全细解决方案
  10. 浏览器内核选型列表,请大家继续补充
  11. CodeForces 980 E The Number Games
  12. MockingBrid(AI拟声)教程
  13. 视频教程-SAP快速入门-其他
  14. VMware安装Windows XP虚拟机并手动安装外加驱动程序
  15. Laravel文档阅读笔记-How to deploy Laravel 8 project on Cpanel shared hosting
  16. 拖延症测试皮肤软件,桌面时钟软件
  17. 计算机关机界面卡住,win7关机卡死在正在关机界面
  18. Windows下通过远程桌面连接向远程电脑传输文件
  19. YOLOv5桌面应用开发(上)——附源代码
  20. 台电TBOOK16PRO安装凤凰安卓系统

热门文章

  1. 如何写出让领导刮目相看的工作汇报?
  2. java 下载模板文件
  3. 工作之余,如何丰富生活?
  4. 《解剖PetShop》系列
  5. JavaWeb——Cookie
  6. 什么是奥林匹克.他的来源是什么
  7. 感恩教师节 | 凡攻我之失者,皆我师也!
  8. 成功团队就是汇聚好的人才?谷歌“亚里士多德项目”为你揭开“惊人”谜底
  9. Html之pre、xmp标签_感觉没什么用_实例
  10. python数据分析之连接MySQL数据库并进行数据可视化