负载均衡 学习笔记
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;
}