架构图
简介: 用户访问负载均衡服务器,负载均衡服务器将相应的请求转发至应用服务器APP1或APP2。当前其中一台应用服务器down调的时候,负载均衡服务器将会把请求转发至另一台正常的服务器上。
步骤
安装负载均衡服务器
安装并启动 nginx (或使用 jellybool 的 sh 脚本)
sudo apt-get update
sudo LC_ALL=en_US.UTF-8 add-apt-repository ppa:nginx/development -y
sudo apt-get update
sudo apt-get -y install nginx
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak
sudo service nginx start
配置 nginx 服务器为负载均衡服务器
upstream backend {
server pravite-ip-address-1; #应用服务器ip地址
server pravite-ip-address-2; #应用服务器ip地址
}
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name nuli.io www.nuli.io;
location / {
add_header X-Content-Type-Options nosniff;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_hide_header X-Powered-By;
proxy_hide_header Vary;
proxy_pass http://backend;
proxy_redirect off;
}
}
检测 nginx 配置并重启 nginx 服务
sudo nginx -t
sudo service nginx reload
安装应用服务器 APP1
安装 nginx 和 php 以及 php 扩展 或使用 jellybool 的 sh 脚本
sudo apt-get update
sudo apt-get -y install zsh htop zip unzip composer
sudo LC_ALL=en_US.UTF-8 add-apt-repository ppa:nginx/development -y
sudo apt-get update
sudo apt-get -y install nginx
sudo service nginx start
sudo LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php -y
sudo apt-get update
sudo apt-get -y install php7.2
sudo apt-get -y install php7.2-mysql
sudo apt-get -y install php7.2-fpm
sudo apt-get -y install php7.2-curl php7.2-xml php7.2-json php7.2-gd php7.2-mbstring php7.2-bcmath
sudo service php7.2-fpm restart
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak
安装应用服务器 APP2 (同 APP1)
测试负载均衡
- 在 APP1 服务器上的
/var/www/html
目录下将index.html
文件内容更改为 APP1。 - 在 APP2 服务器上的
/var/www/html
目录下将index.html
文件内容更改为 APP2。 - 访问负载均衡服务器 ip 地址或配置的域名。此时页面将交替显示 APP1 和 APP2 。~~~成功。
使用 Envoy 将 Laravel 项目同时部署在所有负载均衡的机器上
- 在本机上创建 Laravel 项目
- 将项目提交到 coding 或 github 上
- 配置 coding 或 github 的ssh (可选)
- 使用 ssh 或 https 的方式将项目部署到 APP1 和 APP2 服务器上
- 配置两台服务器的 .env 文件 保证两台服务器的 APP_KEY 要一直
- 测试——访问负载均衡服务器可以看到 Laravel 欢迎语
- 在本机中的 Laravel 项目中安装 Envoy 扩展 参考文档
- 在项目根目录新增
Envoy.blade.php
文件并在文件中增加如下内容。「需要注意的是:本机可以通过 ssh 的方式访问对应的服务器」
@servers(['web-1' => 'ssh root@192.168.3.11', 'web-2' => 'ssh root@192.168.3.11'])
@task('deploy', ['on' => ['web-1', 'web-2'], 'parallel' => true])
cd /var/www/laravel-deploy
sudo git pull origin master
@endtask
- 运行部署命令
envoy run deploy
,如果输出内容没有错误的话,就表示部署成功,就可以在负载均衡服务器上进行查看了。