集群架构-web服务器(接入负载均衡+数据库+会话保持redis)--15454核心配置详解
创始人
2025-01-10 11:03:51
0

紧接着前面的集群架构深化—中小型公司(拓展到大型公司业务)–下面图简单回顾一下之前做的及故障核心知识总结(等后期完全整理后,上传资源希望能帮大家)

在这里插入图片描述
在这里插入图片描述

web集群架构-接入负载均衡部署web02服务器等

web集群-搭建web02节点

[root@web02 ~]#yum install php   [root@web01 ~]#cd /etc/nginx/conf.d/ [root@web01 /etc/nginx/conf.d]#ll -rw-r--r-- 1 root root  581 6月   5 20:58 blog.wulinlinux.cn.conf -rw-r--r-- 1 root root  321 5月  26 10:42 buy.wulinlinux.cn.conf -rw-r--r-- 1 root root  236 6月   4 18:53 cfg.wulinlinux.cn.conf -rw-r--r-- 1 root root 1072 4月  24 02:24 default.conf -rw-r--r-- 1 root root  151 5月  26 10:43 hs.wulin.cn.conf -rw-r--r-- 1 root root  262 6月   3 20:37 proxy.wulinlinux.cn.conf -rw-r--r-- 1 root root  111 5月  26 10:44 wy.wulinlinux.cn.conf  [root@web01 /etc/nginx/conf.d]#cd /etc/php php.d/     php-fpm.d/ php-zts.d/  [root@web01 /etc/nginx/conf.d]#cd /etc/php-fpm.d/ [root@web01 /etc/php-fpm.d]#ll 总用量 20 -rw-r--r-- 1 root root 17964 6月   5 20:54 www.conf  [root@web01 /etc/php-fpm.d]#scp www.conf 192.168.65.8:`pwd` root@192.168.65.8's password:  www.conf                                                                                                                                  100%   18KB  17.6MB/s   00:00  
[root@web01 /etc/php-fpm.d]#cd /app/code/blog/ [root@web01 /app/code/blog]#ll 总用量 232 -rw-r--r--  1 www  www    405 2月   6 2020 index.php -rw-r--r--  1 www  www  19416 5月  26 15:39 license.txt -rw-r--r--  1 www  www   7348 5月  26 15:39 readme.html drwxr-xr-x  3 root root    21 6月   5 21:36 up-content -rw-r--r--  1 www  www   7387 5月  26 15:39 wp-activate.php drwxr-xr-x  9 www  www   4096 5月  26 15:39 wp-admin -rw-r--r--  1 www  www    351 2月   6 2020 wp-blog-header.php -rw-r--r--  1 www  www   2323 5月  26 15:39 wp-comments-post.php -rw-rw-rw-  1 www  www   3283 5月  26 14:32 wp-config.php -rw-r--r--  1 www  www   3328 5月  26 15:39 wp-config-sample.php drwxr-xr-x  7 www  www     99 5月  27 16:59 wp-content -rw-r--r--  1 www  www   5638 5月  26 15:39 wp-cron.php drwxr-xr-x 30 www  www  12288 5月  26 15:39 wp-includes -rw-r--r--  1 www  www   2502 11月 27 2022 wp-links-opml.php -rw-r--r--  1 www  www   3927 5月  26 15:39 wp-load.php -rw-r--r--  1 www  www  50917 5月  26 15:39 wp-login.php -rw-r--r--  1 www  www   8525 5月  26 15:39 wp-mail.php -rw-r--r--  1 www  www  28427 5月  26 15:39 wp-settings.php -rw-r--r--  1 www  www  34385 5月  26 15:39 wp-signup.php -rw-r--r--  1 www  www   4885 5月  26 15:39 wp-trackback.php -rw-r--r--  1 www  www   3246 5月  26 15:39 xmlrpc.php 
  • 打包代码排除上传目录
[root@web01 /app/code/blog]#tar zcf ~/wordpress-no-uploads.tar.gz   .  --exclude=wp-content/uploads/* [root@web01 /app/code/blog]#tar tf ~/wordpress-no-uploads.tar.gz  |grep uploads ./wp-content/uploads/ [root@web01 ~]#scp wordpress-no-uploads.tar.gz  192.168.65.8:`pwd` 

web02:查看并解压到对应的目录

[root@web02 ~]#ll 总用量 27752 -rw-------. 1 root root     1588 5月   4 19:50 anaconda-ks.cfg -rw-r--r--  1 root root 28411082 7月  13 19:14 wordpress-no-uploads.tar.gz [root@web02 ~]#tar xf wordpress-no-uploads.tar.gz -C /app/code/blog/ [root@web02 ~]#ll /app/code/blog/ 总用量 232 -rw-r--r--  1 www  www    405 2月   6 2020 index.php -rw-r--r--  1 www  www  19416 5月  26 15:39 license.txt -rw-r--r--  1 www  www   7348 5月  26 15:39 readme.html drwxr-xr-x  3 root root    21 6月   5 21:36 up-content -rw-r--r--  1 www  www   7387 5月  26 15:39 wp-activate.php drwxr-xr-x  9 www  www   4096 5月  26 15:39 wp-admin -rw-r--r--  1 www  www    351 2月   6 2020 wp-blog-header.php -rw-r--r--  1 www  www   2323 5月  26 15:39 wp-comments-post.php -rw-rw-rw-  1 www  www   3283 5月  26 14:32 wp-config.php -rw-r--r--  1 www  www   3328 5月  26 15:39 wp-config-sample.php drwxr-xr-x  7 www  www     99 5月  27 16:59 wp-content -rw-r--r--  1 www  www   5638 5月  26 15:39 wp-cron.php drwxr-xr-x 30 www  www  12288 5月  26 15:39 wp-includes -rw-r--r--  1 www  www   2502 11月 27 2022 wp-links-opml.php -rw-r--r--  1 www  www   3927 5月  26 15:39 wp-load.php -rw-r--r--  1 www  www  50917 5月  26 15:39 wp-login.php -rw-r--r--  1 www  www   8525 5月  26 15:39 wp-mail.php -rw-r--r--  1 www  www  28427 5月  26 15:39 wp-settings.php -rw-r--r--  1 www  www  34385 5月  26 15:39 wp-signup.php -rw-r--r--  1 www  www   4885 5月  26 15:39 wp-trackback.php -rw-r--r--  1 www  www   3246 5月  26 15:39 xmlrpc.php  
[root@web02 ~]#yum insatll -y nfs-utils [root@web02 ~]#ll /app/code/blog/wp-content/ 总用量 12 -rw-r--r-- 1 www www   28 1月   9 2012 index.php drwxr-xr-x 4 www www 4096 5月  26 15:39 languages drwxr-xr-x 3 www www   55 5月  29 15:55 plugins drwxr-xr-x 6 www www  118 5月  29 15:55 themes drwxr-xr-x 2 www www    6 5月  27 16:58 upgrade drwxr-xr-x 3 www www   18 5月  26 14:36 uploads  [root@web02 ~]#ll /app/code/blog/wp-content/uploads/ 总用量 0 drwxr-xr-x 3 root root 16 6月   4 20:26 2024 [root@web02 ~]#tree /app/code/blog/wp-content/uploads/ /app/code/blog/wp-content/uploads/ └── 2024     └── 05         └── 109951165166142900.jpg  2 directories, 1 file [root@web02 ~]#cd /app/code/blog/wp-content/uploads/ [root@web02 /app/code/blog/wp-content/uploads]#ll 总用量 0 drwxr-xr-x 3 root root 16 6月   4 20:26 2024 [root@web02 /app/code/blog/wp-content/uploads]#rm -fr 2024/ [root@web02 /app/code/blog/wp-content/uploads]#ll 总用量 0 [root@web02 /app/code/blog/wp-content/uploads]#cd .. [root@web02 /app/code/blog/wp-content]#ll 总用量 12 -rw-r--r-- 1 www www   28 1月   9 2012 index.php drwxr-xr-x 4 www www 4096 5月  26 15:39 languages drwxr-xr-x 3 www www   55 5月  29 15:55 plugins drwxr-xr-x 6 www www  118 5月  29 15:55 themes drwxr-xr-x 2 www www    6 5月  27 16:58 upgrade drwxr-xr-x 2 www www    6 7月  13 19:21 uploads  

上面发现挂载的时候,发现不是空的原因是之前所有的文件是从web01上进行copy过来的:

[root@web02 ~]#tar xf wordpress-no-uploads.tar.gz -C /app/code/blog/ [root@web02 ~]#ll /app/code/blog/wp-content/uploads/ 总用量 0 [root@web02 ~]#ll /app/code/blog/ 总用量 232 -rw-r--r--  1 www  www    405 2月   6 2020 index.php -rw-r--r--  1 www  www  19416 5月  26 15:39 license.txt -rw-r--r--  1 www  www   7348 5月  26 15:39 readme.html drwxr-xr-x  3 root root    21 6月   5 21:36 up-content -rw-r--r--  1 www  www   7387 5月  26 15:39 wp-activate.php drwxr-xr-x  9 www  www   4096 5月  26 15:39 wp-admin -rw-r--r--  1 www  www    351 2月   6 2020 wp-blog-header.php -rw-r--r--  1 www  www   2323 5月  26 15:39 wp-comments-post.php -rw-rw-rw-  1 www  www   3283 5月  26 14:32 wp-config.php -rw-r--r--  1 www  www   3328 5月  26 15:39 wp-config-sample.php drwxr-xr-x  7 www  www     99 5月  27 16:59 wp-content -rw-r--r--  1 www  www   5638 5月  26 15:39 wp-cron.php drwxr-xr-x 30 www  www  12288 5月  26 15:39 wp-includes -rw-r--r--  1 www  www   2502 11月 27 2022 wp-links-opml.php -rw-r--r--  1 www  www   3927 5月  26 15:39 wp-load.php -rw-r--r--  1 www  www  50917 5月  26 15:39 wp-login.php -rw-r--r--  1 www  www   8525 5月  26 15:39 wp-mail.php -rw-r--r--  1 www  www  28427 5月  26 15:39 wp-settings.php -rw-r--r--  1 www  www  34385 5月  26 15:39 wp-signup.php -rw-r--r--  1 www  www   4885 5月  26 15:39 wp-trackback.php -rw-r--r--  1 www  www   3246 5月  26 15:39 xmlrpc.php  [root@web02 ~]#systemctl enable nginx php-fpm Created symlink from /etc/systemd/system/multi-user.target.wants/php-fpm.service to /usr/lib/systemd/system/php-fpm.service. [root@web02 ~]#systemctl restart nginx php-fpm [root@web02 ~]#ps -ef |grep www apache     2614   2611  0 19:30 ?        00:00:00 php-fpm: pool www apache     2615   2611  0 19:30 ?        00:00:00 php-fpm: pool www apache     2616   2611  0 19:30 ?        00:00:00 php-fpm: pool www apache     2617   2611  0 19:30 ?        00:00:00 php-fpm: pool www apache     2618   2611  0 19:30 ?        00:00:00 php-fpm: pool www root       2623   2062  0 19:30 pts/0    00:00:00 grep --color=auto www 

在这里插入图片描述
web02打开浏览器:
在这里插入图片描述

发现如果没有进行挂载,图片将不会存在

在这里插入图片描述
文字存在的原因是:写到了数据库;

这时候可以尝试将这个没有显示的图片,换一个页面进行打开发现:
在这里插入图片描述
这里没有出现的情况是没有挂载:

mkdir -p /app/code/blog/wp-content/uploads mount -t /nfs 172.16.1.31:/nfs/wordpress/  /app/code/blog/wp-content/uploads/ 记得要永久挂载 

这时候再刷新页面,图片才能加载出来(图片在nfs服务器存储上面)

web集群lnmp-wordpress(为例)-存储架构图

在这里插入图片描述

问题:负载均衡上的nginx用户需不需要也改成www?还是默认就可以?如果不改对内容有没有影响?

不需要改,负载均衡只需要进行做转发(但是一般还是会进行改掉的:方便批量进行管理)

[root@lb01 ~]#vim /etc/nginx/conf.d/blog.conf 

在这里插入图片描述
现在进行访问,不能直接判断是去了web01上,还是web02上(进一步判断:看日志记录、抓包)

[root@lb01 ~]#nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful [root@lb01 ~]#systemctl reload nginx [root@web02 ~]#tail -f /var/log/nginx/blog-access.log  

在这里插入图片描述

[root@web01 ~]#tail -f /var/log/nginx/blog-access.log 

会发现两边都会出现记录:
在这里插入图片描述

会话保持

(1)概述

  • 用户的请求,登录的请求,经过负载的均衡后落到后面的web服务器上,登录的状态、信息也会记录在web服务器上,就会导致不通的web服务器上,登录的状态不统一,造成用户频繁需要登录

  • 会话:用户登录状态、购物车状态

  • 目标:如何实现会话保持,会话共享?

(2)cookie vs session

开发中核心概念:知晓cookie与sesion含义,大致区别:

技术点 共同点 区别 其他
cookie 存放用户的信息,登录信息 存放在客户端浏览器 服务器给客户端响应,进行设置set-cookie,未来再次访问携带者cookie访问服务端
session 存放用户的信息,登录信息 存放服务端(文件,数据) 浏览器cookie与服务端的session

浏览器F12查看cookie信息:
在这里插入图片描述
在这里插入图片描述

(3)会话保持方案-架构设计图

在这里插入图片描述

  • 纯粹cookie
  • cookie+session方式 + 统一存放session服务器(会话保持服务器)
  • ip_hash方法
  • 通过redis实现phpmyadmin、kodbox会话共享

部署:phpmyadmin:web页面版本的数据库管理工具,sql语句,php代码

部署流程

流程:

  1. db01服务器:phpmyadmin用户,权限大一些
  2. web服务器:部署代码,传输到另外一个web上
  3. 准备redis环境(db01)
  4. 修改php配置
  5. 接入负载均衡,访问与测试0

a)db准备phpmyadmin的用户

grant all on *.* to 'phpmyadmin'@'172.16.1.%' identified by '1'; 

在这里插入图片描述

b)部署代码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
下载官方包:
在这里插入图片描述
上传到linux中:
在这里插入图片描述

#查看压缩包格式 [root@web01 ~]#ll phpMyAdmin-5.2.1-all-languages.zip  -rw-r--r-- 1 root root 15096155 7月  16 13:30 phpMyAdmin-5.2.1-all-languages.zip 

在这里插入图片描述

##解压到当前目录 unzip phpMyAdmin-5.2.1-all-languages.zip  [root@web01 ~]#mkdir -p /app/code/admin [root@web01 ~]#mv phpMyAdmin-5.2.1-all-languages/*  /app/code/admin/ 

在这里插入图片描述

浏览器访问admin.wylinlinux.cn出现phpmyadmin报错

在这里插入图片描述
问题:
在这里插入图片描述
刷新之后重新访问网站:
在这里插入图片描述
登录外界数据库发现登录失败:原因是这种登录方式为本地,所以登录会出现下图错误:
在这里插入图片描述

默认连接的是本地的数据库,怎么让它连接db01服务器呢?

解决方式:手动创建连接数据库的配置文件

cp config.sample.inc.php  grep -n host config.inc.php 30:$cfg['servers']['$i']['host']='172.16.1.51';   chown -R www.www /var/lib/php/session ll -d /var/lib/php/session 

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以上就成功连接到别的数据库:
在这里插入图片描述

[root@web01 /app/code]#scp -r admin/ 192.168.65.8:`pwd` [root@web01 /app/code]#cd /etc/nginx/conf.d/ [root@web01 /etc/nginx/conf.d]#scp phpmyadmin.wulinlinux.cn.conf  192.168.65.8:`pwd` root@192.168.65.8's password:  phpmyadmin.wulinlinux.cn.conf                                                                                                             100%  592   719.3KB/s   00:00  [root@web02 ~]#nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful [root@web02 ~]#systemctl  reload nginx [root@web02 ~]#chown -R www.www /var/lib/php/session  

在这里插入图片描述
在这里插入图片描述
检查语法

[root@lb01 /etc/nginx/conf.d]#nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful [root@lb01 /etc/nginx/conf.d]#systemctl reload nginx.service  

本地解析:
在这里插入图片描述
访问浏览器,刷新之后要重新登录:
在这里插入图片描述

突然出现报错:

在这里插入图片描述
然后我在访问的浏览器前面加上https,然后登录没有报错,但是重新登录又出现报错(反复),

所以这也就模拟成功了myadmin会话保持的问题

3)部署redis

yum install -y redis  修改/etc/redis.conf  bind 127.0.0.1  172.16.1.51 # 172.16.1.51本地的网卡的ip    systemctl  enable  --now redis  systemctl  start  redis  ss -lntup |grep redis 

安装redis,并且编辑redis文件:
在这里插入图片描述
检查语法,过滤端口:
在这里插入图片描述
在这里插入图片描述

4)lb01服务器配置文件

[root@lb01 /etc/nginx/conf.d]#cat phpmyadmin.wulinlinux.cn.conf  upstream phpmyadmin_pools {     server 10.0.0.7:80;    server 10.0.0.8:80;    }  server {     listen 80;   server_name phpmyadmin.wulinlinux.cn;      #error_log     #access_log     location / {         proxy_pass http://phpmyadmin_pools;         proxy_set_header Host $http_host;         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;     } 

这里模拟为了节省机器,不单独创建一个会话共享的服务器,用db01这个服务器做

5)php配置文件指定会话存放位置

[root@web01 ~]#cd /etc/nginx/conf.d/ [root@web01 /etc/nginx/conf.d]# [root@web01 /etc/nginx/conf.d]#cd /etc/php-fpm.d/ [root@web01 /etc/php-fpm.d]#ll 总用量 20 -rw-r--r-- 1 root root 17964 6月   5 20:54 www.conf [root@web01 /etc/php-fpm.d]#cp www.conf session.conf [root@web01 /etc/php-fpm.d]#vim session.conf [root@web01 /etc/php-fpm.d]#egrep -v '^$|;' session.conf  

创建新的子配置文件:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

通知php指定会话保持位置:redis tcp://172.16.1.51:6379

在这里插入图片描述
修改/etc/php-fpm.d/www.conf

php_value[session.save_handler] = redis

php_value[session.save_path] = tcp://172.16.1.51:6379

  • session.conf
[session] user = www group = www listen = 127.0.0.1:9001 listen.allowed_clients = 127.0.0.1 pm = dynamic pm.max_children = 50 pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 35 slowlog = /var/log/php-fpm/www-slow.log verwritten from PHP call 'ini_set'. php_admin_value[error_log] = /var/log/php-fpm/www-error.log php_admin_flag[log_errors] = on php_value[session.save_handler] = files php_value[session.save_path]    = /var/lib/php/session php_value[soap.wsdl_cache_dir]  = /var/lib/php/wsdlcache php_admin_value[error_log] = /var/log/php-fpm/www-error.log php_admin_flag[log_errors] = on php_value[session.save_handler] = files php_value[session.save_path]    = tcp://172.16.65.7:6379 php_value[soap.wsdl_cache_dir]  = /var/lib/php/wsdlcache 

检查语法:
在这里插入图片描述

[root@web01 /etc/php-fpm.d]#systemctl reload php-fpm.service #重启 

过滤端口:

在这里插入图片描述
在这里插入图片描述

  • 修改nginx配置文件 ,将admin转发到9001端口的php处理

  • 检查语法,重启

  • 最终的测试:

[root@web01 /etc/php-fpm.d]#scp session.conf web02:`pwd` root@web01's password:  session.conf                                                                                           100%  766     2.6MB/s   00:00   [root@web02 ~]#systemctl reload nginx [root@web02 ~]#chown -R www.www /var/lib/php/session/ [root@web02 ~]#systemctl reload php-fpm.service  

重新登录,不会出现前面反复登录的情况:
在这里插入图片描述
session信息写入到了redis(会话共享服务器中):
在这里插入图片描述
在这里插入图片描述

如果删掉服务端这里的session,将要重新登录,重新进去创建session信息

在这里插入图片描述
以上成功测试完成!!!

相关内容

热门资讯

黑科技辅助挂《Wepoke稳定... 黑科技辅助挂《Wepoke稳定》软件透明挂!(软件)透明挂科技(2022已更新)(哔哩哔哩)黑科技辅...
2025新版辅助(智星德州)辅... 2025新版辅助(智星德州)辅助透视(智星德州)透明挂辅助外挂(2024已更新)(哔哩哔哩);智星德...
实测交流!(微扑克智能)外挂辅... 实测交流!(微扑克智能)外挂辅助器代打工具!(透视)详细教程(2020已更新)(哔哩哔哩);人气非常...
第七方教程!微扑克AI外挂辅助... 第七方教程!微扑克AI外挂辅助器脚本(辅助挂)原来真的有挂(有挂存在)详细教程(哔哩哔哩)是一款可以...
分享给玩家《wpk微扑克透视辅... 分享给玩家《wpk微扑克透视辅助》太坑了其实确实真的有挂(有挂神器);超受欢迎的wpk微扑克小游戏,...
辅助教程!wpk微扑克(wPK... 辅助教程!wpk微扑克(wPK)透视辅助!(透视辅助)详细教程(2021已更新)(哔哩哔哩)是一款可...
第8方教程(NZT扑克)软件透... 第8方教程(NZT扑克)软件透明挂(NZT扑克)透明挂辅助软件(2024已更新)(哔哩哔哩);NZT...
一起来探讨(WEPOke)软件... 一起来探讨(WEPOke)软件透明挂,(Wepoke检测)外挂辅助挂,详细教程(真实有挂);AI智能...
玩家必备教程《Wepoke脚本... 玩家必备教程《Wepoke脚本》软件透明挂!(软件)透明挂内置(2020已更新)(哔哩哔哩);致您一...
2024版方法!微扑克智能外挂... 相信很多朋友都在电脑上玩过微扑克吧,但是很多朋友都在抱怨用电脑玩起来不方便。为此小编给大家带来了微扑...