案例No.50:Nginx负载均衡会话保持

前期准备环境

web01、web02

  1. web01web02db01nfs01都要优化基本源)
    [root@web01 ~]# vim /etc/yum.repos.d/CentOS-Base.repo
    #将[base]下的baseurl第二条、第三条源链接删除;
    #将[updates]下的baseurl第二条、第三条源链接删除;
    #将[extras]下的baseurl第二条、第三条源链接删除;
    #将[centosplus]下的baseurl第二条、第三条源链接删除;wq保存并退出

    #安装nginx

    #更改nginx源
    [root@web01 ~]# vim /etc/yum.repos.d/nginx.repo
    [nginx]
    name=nginx repo
    baseurl=http://nginx.org/packages/centos/7/$basearch/
    gpgcheck=0
    enabled=1


    [root@web02 ~]# vim /etc/yum.repos.d/nginx.repo
    [nginx]
    name=nginx repo
    baseurl=http://nginx.org/packages/centos/7/$basearch/
    gpgcheck=0
    enabled=1

    #安装nginx
    [root@web01 ~]# yum install -y nginx
    [root@web02 ~]# yum install -y nginx

    #创建nginx启动用户
    [root@web01 ~]# groupadd www -g 666
    [root@web01 ~]# useradd www -u 666 -g 666 -s /sbin/nologin -M

    #创建nginx启动用户
    [root@web02 ~]# groupadd www -g 666
    [root@web02 ~]# useradd www -u 666 -g 666 -s /sbin/nologin -M


    #修改nginx的启动用户(在web02上也要修改)
    [root@web01 ~]# vim /etc/nginx/nginx.conf
    user www;

    #启动nginx并加入开机自启(在web02上也要启动nginx)
    [root@web01 ~]# systemctl start nginx
    [root@web01 ~]# systemctl enable nginx
    Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.

    ===================================================

    #更改PHP源(web01、web02)
    [root@web01 ~]# vim /etc/yum.repos.d/php.repo

    [php-webtatic]
    name = PHP Repository
    baseurl = http://us-east.repo.webtatic.com/yum/el7/x86_64/
    gpgcheck = 0

    #安装PHP(web01、web02)
    [root@web01 ~]# yum -y install php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb

    #修改PHP的启动用户(web01、web02)
    [root@web01 ~]# vim /etc/php-fpm.d/www.conf
    user = www
    group = www

    #启动PHP加入开机自启(web01、web02)
    [root@web01 ~]# systemctl start php-fpm
    [root@web01 ~]# systemctl enable php-fpm
    Created symlink from /etc/systemd/system/multi-user.target.wants/php-fpm.service to /usr/lib/systemd/system/php-fpm.service.


    db01
    #安装数据库
    [root@db01 ~]# yum install -y mariadb-server

    #启动数据库
    [root@db01 ~]# systemctl start mariadb


    lb01上安装nginx
    #先在lb01上安装nginx
    [root@lb01 /]# cd ~
    [root@lb01 ~]# mkdir php
    [root@lb01 ~]# rz -E
    rz waiting to receive.
  2.  
  3. lb01
    [root@lb01 php]# ll
    total 41756
    -rw-r--r-- 1 root root 42755522 Aug 20 16:26 nginx_php_mariadb.tar.gz
    #解压压缩包
    [root@lb01 php]# tar xf nginx_php_mariadb.tar.gz

    #安装nginx
    [root@lb01 php]# cd nginx_php_mariadb
    [root@lb01 nginx_php_mariadb]# rpm -ivh nginx-1.16.1-1.el7.ngx.x86_64.rpm


    #检查是否安装成功
    [root@lb01 nginx_php_mariadb]# rpm -qa | grep nginx
    nginx-1.16.1-1.el7.ngx.x86_64


    #启动nginx并加入开机自启
    [root@lb01 ~]# systemctl start nginx
    [root@lb01 ~]# systemctl enable nginx
    Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.

====================================================================

1、配置nginx

  1. [root@web01 code]# cd /etc/nginx/conf.d/
    [root@web01 conf.d]# cat php.conf
    server {
      listen 80;
      server_name php.drz.com;
      root /code/phpMyAdmin-4.8.4-all-languages;

      location / {
          index index.php index.html;
      }

      location ~ \.php$ {
          fastcgi_pass 127.0.0.1:9000;
          fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
          include fastcgi_params;
      }
    }
    [root@web01 conf.d]# systemctl restart nginx

2、安装phpmyadmin(web01、web02上都装)

  1. [root@web01 ~]# mkdir /code
    [root@web01 conf.d]# cd /code

    #安装phpmyadmin
    [root@web01 code]# wget https://files.phpmyadmin.net/phpMyAdmin/4.9.0.1/phpMyAdmin-4.9.0.1-all-languages.zip

    [root@lb01 code]# yum install -y unzip

    #解压
    [root@web01 code]# unzip phpMyAdmin-4.9.0.1-all-languages.zip

3、配置phpmyadmin连接远程的数据库

  1. [root@web01 conf.d]# cd /code
    [root@web01 code]# cd phpMyAdmin-4.9.0.1-all-languages
    [root@web01 phpMyAdmin-4.9.0.1-all-languages]# cp config.sample.inc.php config.inc.php
    [root@web01 phpMyAdmin-4.9.0.1-all-languages]# vim config.inc.php
    /* Server parameters */
    $cfg['Servers'][$i]['host'] = '172.16.1.51';

4、配置授权

  1. [root@web01 phpMyAdmin-4.9.0.1-all-languages]# cd /etc/nginx/conf.d/
    [root@web01 conf.d]# chown -R www.www /var/lib/php/

    #重启nginx
    [root@web01 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@web01 conf.d]# nginx -s reload

配置hosts文件 windows键+R——drivers——etc——10.0.0.7 php.drz.com blog.drz.com zh.drz.com

  1. [root@web01 phpMyAdmin-4.8.4-all-languages]# ll /var/lib/php/session/
    总用量 4
    -rw-------. 1 www www 2424 8 21 18:41 sess_e96b27a6a628be47745a10a36e2fcd5a

5、将web01上配置好的phpmyadmin以及nginx的配置文件推送到web02主机上

  1. [root@web01 code]# scp -rp phpMyAdmin-4.9.0.1-all-languages/ root@172.16.1.8:/code/
    [root@web01 code]# scp /etc/nginx/conf.d/php.conf root@172.16.1.8:/etc/nginx/conf.d/

6、在web02上重载nginx服务

  1. [root@web02 code]# systemctl restart nginx

7、授权

  1. [root@web02 code]# chown -R www.www /var/lib/php/

8、接入负载均衡

  1. [root@lb01 ~]# cd /etc/nginx/conf.d/
    [root@lb01 conf.d]# vim proxy_php.com.conf
    upstream php {
          server 172.16.1.7:80;
          server 172.16.1.8:80;
    }
    server {
          listen 80;
          server_name php.drz.com;
          location / {
                  proxy_pass http://php;
                  proxy_set_header HOST $http_host;

          }
    }

    [root@lb01 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 conf.d]# systemctl restart nginx

配置hosts文件 windows键+R——drivers——etc——10.0.0.8 php.drz.com blog.drz.com zh.drz.com

10.0.0.8 php.drz.com blog.drz.com zh.drz.com

打开浏览器,输入php.drz.com,输入用户名:wp、密码:Zls123.com

使用负载均衡的轮询功能后,会发现两个机器上的sessionId不一致。

9、使用redis解决会话登录问题

1)安装redis内存数据库

  1. [root@db01 ~]# yum install -y redis

2)配置redis监听在172.16.1.0网段上


  1. [root@db01 ~]# sed -i '/^bind/c bind 127.0.0.1 172.16.1.51' /etc/redis.conf

3)启动redis

  1. [root@db01 ~]# systemctl start redis
    [root@db01 ~]# systemctl enable redis
    Created symlink from /etc/systemd/system/multi-user.target.wants/redis.service to /usr/lib/systemd/system/redis.service.

4)php配置session链接redis

  1. #1.修改/etc/php.ini文件
    [root@web ~]# vim /etc/php.ini
    session.save_handler = redis
    session.save_path = "tcp://172.16.1.51:6379"
    ;session.save_path = "tcp://172.16.1.51:6379?auth=123" #如果redis存在密码,则使用该方式
    session.auto_start = 1

    #2.注释php-fpm.d/www.conf里面的两条内容,否则session内容会一直写入/var/lib/php/session目录中(/php_value 往下看一点点)
    [root@web01 code]# vim /etc/php-fpm.d/www.conf
    ;php_value[session.save_handler] = files
    ;php_value[session.save_path]   = /var/lib/php/session

5)重启php-fpm

  1. [root@web01 code]# systemctl restart php-fpm

6)将web01上配置好的文件推送到web02

  1. [root@web01 code]# scp /etc/php.ini root@172.16.1.8:/etc/php.ini
    [root@web01 code]# scp /etc/php-fpm.d/www.conf root@172.16.1.8:/etc/php-fpm.d/www.conf

7)web02上重启php-fpm

  1. [root@web02 code]# systemctl restart php-fpm

8)redis查看数据

  1. [root@db01 redis]# redis-cli
    127.0.0.1:6379> keys *
    1) "PHPREDIS_SESSION:1365eaf0490be9315496cb7382965954"

配置hosts文件 windows键+R——drivers——etc——10.0.0.5 php.drz.com

Linux架构之Nginx 负载均衡会话保持的更多相关文章

  1. 0x06 - Nginx 负载均衡会话保持

    Nginx 负载均衡会话保持 背景 负载均衡时,如果APP需要保持特定状态的时候,就要保证同一用户的 session 会被分配到同一台服务器上. 实现方案 使用cookie 将用户的 session ...

  2. 架构之Nginx(负载均衡/反向代理)

    Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器 ,也是一个 IMAP/POP3/SMTP 代理 服务器 . Nginx 是由 Igor Sys ...

  3. linux下配置nginx负载均衡例子

    准备2台虚拟机: 分别在两个虚拟机上安装tomcat,并在服务器A安装nginx,其中nginx端口设置为了 70. 服务器A的tomcat安装目录: 服务器B的tomcat安装目录: 服务器A的ng ...

  4. Linux架构之Nginx 七层负载均衡

    第50章 Nginx七层负载均衡 一.Nginx负载均衡基本概述 1)为什么要使用负载均衡 当我们的Web服务器直接面向用户,往往要承载大量并发请求,单台服务器难以负荷.使用多台Web服务器组成集群, ...

  5. 架构设计:负载均衡层设计方案(2)——Nginx安装

    来源:http://blog.csdn.net/yinwenjie(未经允许严禁用于商业用途!) 目录(?)[-] Nginx重要算法介绍 1一致性Hash算法 2轮询与加权轮询 Nginx的安装 1 ...

  6. 架构设计:负载均衡层设计方案(3)——Nginx进阶

    版权声明:欢迎转载,但是看在我辛勤劳动的份上,请注明来源:http://blog.csdn.net/yinwenjie(未经允许严禁用于商业用途!) 目录(?)[-] Nginx继续进阶 1gzip ...

  7. 架构设计:负载均衡层设计方案(7)——LVS + Keepalived + Nginx安装及配置

    1.概述 上篇文章<架构设计:负载均衡层设计方案(6)——Nginx + Keepalived构建高可用的负载层>(http://blog.csdn.net/yinwenjie/artic ...

  8. 架构设计:负载均衡层设计方案(6)——Nginx + Keepalived构建高可用的负载层

    1.概述 前两遍文章中,我们一直在说后文要介绍Nginx + Keepalived的搭建方式.这篇文章开始,我们就来兑现前文的承诺,后续的两篇文章我们将介绍Nginx + Keepalived和 LV ...

  9. Linux(7)- Nginx.conf主配置文件、Nginx虚拟主机/访问日志/限制访问IP/错误页面优化、Nginx反向代理、Nginx负载均衡

    一.Nginx.conf主配置文件 Nginx主配置文件conf/nginx.conf是一个纯文本类型的文件,整个配置文件是以区块的形式组织的.一般,每个区块以一对大括号{}来表示开始与结束. 核心模 ...

随机推荐

  1. Android Bluetooth 文件接收路径修改方法

    修改文件: packages/apps/Bluetooth/src/com/android/bluetooth/opp/BluetoothOppReceiveFileInfo.java 相关代码片段: ...

  2. string matching

    string matching exkmp #include<bits/stdc++.h> using namespace std; ; int Nex[maxn],extend[maxn ...

  3. VXcode学习

    1.安装中文包(chinese) 2.打开控制面板ctrl+shift+p

  4. 10 Django与Ajax

    知识预览 1. Ajax 2. 文件上传 Ajax Ajax简介 AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”.即使用J ...

  5. Otto

    导入依赖:implementation 'com.squareup:otto:1.3.8'1定义一个类继承Bus,并且设置单列模式注册和声明订阅者发送事件,最后解除注册与EventBus相同Event ...

  6. ARM非对齐访问和Alignment Fault

    1.指令对齐 A64指令必须word对齐.尝试在非对齐地址取值会触发PC alignment fault. 1.1.PC alignment checking PC(Program Counter)寄 ...

  7. 如何查看yum安装的程序包都放在哪些地方了?

    yum安装, 是先下载下来, 然后安装, 用dnf代替yum后, 配置文件跟yum类似, 也是放在 /etc/dnf/ 目录下的, 也有dnf.conf 配置文件等 dnf list后面还可以跟参数: ...

  8. Arrays.toList工具类

  9. 快速入门分布式消息队列之 RabbitMQ(1)

    目录 目录 前言 简介 安装 RabbitMQ 基本对象概念 Message 消息 Producer 生产者 Consumer 消费者 Queue 队列 Exchange 交换机 Binding 绑定 ...

  10. 负载均衡环境搭建(nginx和tomcat)

    偶然看到博客上一篇负载均衡的文章,学习了一下,此处做下记录 目录 1.环境准备 2.tomcat配置 3.nginx配置 1.环境准备 第一步:java环境 第二步:nginx和pcre源码包 下载链 ...