负载均衡
负载均衡
建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。简单来说就是压力分摊
主机准备
主机 | ip地址 |
---|---|
web01 | 172.16.1.7 |
web02 | 172.16.1.8 |
lb01 | 172.16.1.5 |
1.首先在负载上要有nginx
写wordpress产品的负载
cat /etc/nginx/conf.d/word_proxy.conf
upstream word {
server 172.16.1.7:80;
server 172.16.1.8:80;
}
server {
server_name blog.wordpress.com;
listen 80;
location / {
proxy_pass http://word;
include proxy_params;
}
}
172.16.1.7和172.16.1.8上的环境必须一模一样
如何快速克隆呢?
2.创建虚拟用户将web01的nginx,php配置文件拉送过来并将站点目录也给打包压缩过来将服务加入到开机自启和开启服务
#创建用户组
groupadd -g 666 www
#创建不能登录的虚拟用户
groupadd -g 666 -s /sbin/nologin www
#克隆源
scp root@172.16.1.7:/etc/yum.repos.d/* /etc/yum.repos.d/
#安装php和nginx
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 nginx
#将被克隆的机器的配置文件进行拷贝
rsync -avz --delete root@172.16.1.7:/etc/nginx /etc/
rsync -avz --delete root@172.16.1.7:/etc/php-fpm.d/* /etc/php-fpm.d/
#将站点目录打包压缩推送到远端
[root@web01 ~]# tar czf code.tar.gz /code/
rsync -avz root@172.16.1.7:~/code.tar.gz ./
tar xf code.tar.gz -C /
systemctl enable nginx php-fpm
systemctl start nginx php-fpm
3.配置知乎的负载
vim /etc/nginx/conf.d/zh_proxy.conf
upstream zh {
server 172.16.1.7:80;
server 172.16.1.8:80;
}
server {
server_name zh.zhihu.com;
listen 80;
location / {
proxy_pass http://zh;
include proxy_params;
}
}
4.jpress的负载
vim /etc/nginx/conf.d/java.conf
upstream java {
server 172.16.1.9:8080;
}
server {
listen 80;
server_name jp.jpress.com;
location / {
proxy_pass http://java;
include proxy_params;
}
}
5.编写本地hosts文件
6.将网站做成HTTPS
1.第一步要生成ssl
mkdir /etc/nginx/ssl_key -p && cd /etc/nginx/ssl_key
2.openssl genrsa -idea -out server.key 2048 ##密码输入1234
##一路随缘按WC (注意此证书为假证书不可乱来哦)
3.openssl req -days 36500 -x509 \
-sha256 -nodes -newkey rsa:2048 -keyout server.key -out server.crt
7.修改负载和web端的配置文件
#wordpress产品负载上的conf:
upstream word {
server 172.16.1.7:443;
server 172.16.1.8:443;
}
server {
server_name blog.oldboy.com;
listen 80;
return 302 https://$server_name$request_uri;
}
server {
server_name blog.oldboy.com;
listen 443;
ssl on;
ssl_certificate ssl_key/server.crt;
ssl_certificate_key ssl_key/server.key;
location / {
proxy_pass https://word;
include proxy_params;
}
}
#wordpress产品web端上的配置文件:
server {
listen 443;
server_name blog.oldboy.com;
root /code/wordpress;
index index.php index.html;
ssl on;
ssl_certificate ssl_key/server.crt;
ssl_certificate_key ssl_key/server.key;
location ~ \.php$ {
root /code/wordpress;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
#负载上的知乎配置文件:
upstream zh {
server 172.16.1.7:443;
server 172.16.1.8:443;
}
server {
server_name zh.oldboy.com;
listen 80;
return 302 https://$server_name$request_uri;
}
server {
server_name zh.oldboy.com;
listen 443;
ssl on;
ssl_certificate ssl_key/server.crt;
ssl_certificate_key ssl_key/server.key;
location / {
proxy_pass https://zh;
include proxy_params;
}
}
#web端上的配置文件:
server {
server_name zh.oldboy.com;
listen 443;
root /code/zh;
index index.php index.html;
ssl on;
ssl_certificate ssl_key/server.crt;
ssl_certificate_key ssl_key/server.key;
location ~ \.php$ {
root /code/zh;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
#配置jpress的负载配置文件:
upstream java {
server 172.16.1.9:8080;
}
server {
listen 80;
server_name jp.oldboy.com;
return 302 https://$server_name$request_uri;
}
server {
listen 443;
server_name jp.oldboy.com;
ssl on;
ssl_certificate ssl_key/server.crt;
ssl_certificate_key ssl_key/server.key;
location / {
proxy_pass http://java;
include proxy_params;
}
}
8.将原本的hosts的ip改为负载ip就ok了