负载均衡实战

负载均衡 学习笔记


LAMP 环境搭建 (Ubuntu 14.04 LTS)

一、Ubuntu 14.04 LTS 版本 准备好

二、安装Apache2

更新下 apt-get 源,在安装

twitch@ubuntu1:~$ sudo apt-get update
更新的时候出现一些错误,是因为缺少依赖的问题可以使用
twitch@ubuntu1:~$ sudo apt-get -f install
twitch@ubuntu1:~$ sudo apt-get install  Apache2

三、安装 Mysql5.6

先安装 Mysql5.6 的依赖

twitch@ubuntu1:~$ sudo apt-get install mysql-client-core-5.6
twitch@ubuntu1:~$ sudo apt-get install mysql-client-5.6
安装 Mysql 5.6 的服务
twitch@ubuntu1:~$ sudo apt-get install mysql-server-5.6
twitch@ubuntu1:~$ mysql --version
mysql  Ver 14.14 Distrib 5.6.33, for debian-linux-gnu (x86_64) using  EditLine wrapper

四、安装 php 5.6

twitch@ubuntu1:~$ sudo add-apt-repository ppa:ondrej/php5-5.6
twitch@ubuntu1:~$ sudo apt-get install python-software-properties

twitch@ubuntu1:~$ sudo apt-get update
twitch@ubuntu1:~$ sudo apt-get install php5

twitch@ubuntu1:~$ php -v
PHP 5.6.23-1+deprecated+dontuse+deb.sury.org~trusty+1 (cli)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

LNMP 环境搭建

系统 ubuntu 安装好后," sudo apt-get update " 更新下,强制安装依赖关系库 " sudo apt-get -f install ",查看Ubuntu系统版本命令:

proc目录下记录的当前系统运行的各种数据,version记录的版本信息直接可以通过cat查看到。


第一种

   使用命令:cat /proc/version 查看
proc目录下记录的当前系统运行的各种数据,version记录的版本信息可以直接通过cat查看到,还可以看到我的gcc版本呢
第二种

   使用命令:uname -a 查看
第三种

   使用命令:lsb_release -a 查看

安装 Nginx 1.10.1 稳定版本

先加载依赖源进来,不然直接安装,版本会是 1.4.6,因为ubuntu的源并没有更新,所以自己手动添加进来吧!

$ sudo add-apt-repository ppa:nginx/stable
$ sudo apt-get update
$ sudo apt-get install nginx

twitch@ubuntu1:~$ nginx -v
nginx version: nginx/1.10.1

卸载

sudo apt-get remove nginx

安装Mysql

$ sudo apt-get install mysql-client-core-5.6 mysql-client-5.6 mysql-server-core-5.6 mysql-server-5.6
$ sudo service mysql start

安装php5.6

sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt grade
sudo apt-get install php5.6 php5.6-mysql php-gettext php5.6-mbstring libapache2-mod-php5.6 php5.6-fpm
//将5.6的地方改为7.0就可以安装php7.0
sudo service php5.6-fpm restart
sudo service ngnix restart

PHP 与 Nginx 关联

下面这是/etc/nginx/site-available/default文件配置的一部分, 按照这样修改配置其关联php5.6,
在默认安装php 的时候会自动安装 apache2 服务器,所以先卸载apache2,不然你在访问服务器的时候会一直是apache2 的页面哦!

location ~ \.php$ {
        include snippets/fastcgi-php.conf;
#
#       # With php5-cgi alone:
#       fastcgi_pass 127.0.0.1:9000;
#       # With php5-fpm:
        fastcgi_pass unix:/var/run/php/php5.6-fpm.sock;  # 注意着里sock文件的位置(在/var/run下找到对应的sock文件)
}



$ sudo service nginx restart

LNMP 环境搭建 下配置两个站点

创建 两个站点 目录 testone testtwo

两个目录都在 /var/www 目录下

增加两个虚拟主机 映射

在目录 /etc/nginx/sites-available/ 下,对 cp 两个 default ,生成配置文件,按你的 站点访问名来命名,认识度!

twitch@ubuntu1:/etc/nginx/sites-available$ ls
default  default.bak  testone.app  testtwo.app

修改 站点 配置文件

# Default server configuration
#
server {
        listen 80;
        listen [::]:80;

两个 default_server !

# include snippets/snakeoil.conf;

     root /var/www/testone;    // 站点目录 修改

     # Add index.php to the list if you are using PHP
     index index.html index.htm index.nginx-debian.html index.php;  // 解析 php 文件 ,加入 index.php

     server_name testone.app;  // 修改 访问站点名

修改完站点配置文件,建立软件件,加载到 sites-enabled

twitch@ubuntu1:/etc/nginx/sites-available$ sudo ln -s /etc/nginx/sites-available/testone.app  ../sites-enabled/

;修改 本地 hosts文件 ,域名解析

192.168.214.133  testone.app
192.168.214.133  testtwo.app

LNMP 环境 配置 负载均衡!

相关配置

三台 LNMP 环境服务器做测试,一台做负载均衡服务器,其他两台位web服务器!

名称 | IP | hostname
---|---
负载均衡Server | 192.168.214.133 | LNMP14_1
web 1 Server | 192.168.214.136| LNMP14_2
web 2 Server | 192.168.214.137| LNMP14_3

负载均衡 Server 相关配置

添加下面相关代码:

twitch@ubuntu1:/etc/nginx/sites-available$ sudo vim testthree.app

#
upstream testthree.app {
     # ip_hash;   
     server 192.168.214.136:80;
     server 192.168.214.137:80;
   }

   server {
           listen 80;

           root /var/www/html;

           # Add index.php to the list if you are using PHP
           index index.html index.htm index.nginx-debian.html;

           server_name testthree.app;

           location / {
                   # First attempt to serve request as file, then
                   # as directory, then fall back to displaying a 404.
                  proxy_pass  http://testthree.app;
           }

其他两台 web Server 相关配置


twitch@ubuntu1:/etc/nginx$ sudo vim nginx.conf

server {
  listen 80;
  server_name testthree.app;
  index index.html;
  root /var/www/html;
}

twitch@ubuntu1:/etc/nginx$ sudo service nginx restart

为了清晰可见负载均衡的效果,这个两个web服务器 给予不同的显示内容!

ip_hash 解决一个ip地址访问 会话持久

同一客户端连续的Web请求可能会被分发到不同的后端服务器进行处理,因此如果涉及到会话Session,那么会话会比较复杂。常见的是基于数据库的会话持久化。要克服上面的难题,可以使用基于IP地址哈希的负载均衡方案。这样的话,同一客户端连续的Web请求都会被分发到同一服务器进行处理。

LNMP 基于权重的负载均衡

基于权重的负载均衡即Weighted Load Balancing,这种方式下,我们可以配置Nginx把请求更多地分发到高配置的后端服务器上,把相对较少的请求分发到低配服务器。
配置的例子如下:

upstream testthree.app {
     # ip_hash;
     # weight - 设置这台服务器响应的比重,默认为1,数值越大访问权重越大
     server 192.168.214.136:80 weight=1;
     server 192.168.214.137:80 weight=10;
   }

LNMP 实现动静分离

LNMP14_2 192.168.214.136 动态资源
LNMP14_3 192.168.214.137 静态资源

# 动态资源  访问ip
upstream php {
  server 192.168.214.136:80;
}
# 静态资源 访问ip
upstream html {
  server 192.168.214.137:80;
}


location ~ \.php$ {
        include snippets/fastcgi-php.conf;
#
#       # With php5-cgi alone:
#       fastcgi_pass 127.0.0.1:9000;
#       # With php5-fpm:
        fastcgi_pass unix:/var/run/php/php5.6-fpm.sock;
        # 动态资源 访问
        proxy_pass         http://php;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
}

location ~ \.html$ {
     proxy_pass         http://html;
     proxy_set_header   Host             $host;
     proxy_set_header   X-Real-IP        $remote_addr;
     proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
}


你可能感兴趣的:(负载均衡实战)