使用homebrew在macOS中安装nginx实现Tomcat的负载均衡集群
在Linux中安装时需要自行下载源代码、安装依赖,然后编译、安装。在macOS中,有一个简便的方式,那就是使用homebrew。在Linux中安装以及配置nginx的连接为:https://blog.csdn.net/asahinokawa/article/details/82288567。虽然用了很长一段时间,但基本上是使用
brew install xxxx
此类命令上,对其他的用法不是很了解。借着安装nginx的机会,熟悉一下其他的一些有用的用法。
熟悉homebrew
安装方式,可参考官网教程说明:https://brew.sh/。
基本用法:按照惯例,应该使用brew help
或man brew
去了解一下基本的用法。使用brew help
就已经足够了,其结果也是相当地易懂、易操作,如下:
➜ ~ brew help
Example usage:
brew search [TEXT|/REGEX/] # 搜索软件,实用
brew info [FORMULA...] # 查询软件相关信息,非常有用
brew install FORMULA... # 这个不解释
brew update # 更新软件列表
brew upgrade [FORMULA...] # 更新xx软件
brew uninstall FORMULA... # 卸载xx软件
brew list [FORMULA...] # 列出通过brew安装的软件
Troubleshooting:
brew config
brew doctor
brew install --verbose --debug FORMULA
Contributing:
brew create [URL [--no-fetch]]
brew edit [FORMULA...]
Further help:
brew commands
brew help [COMMAND]
man brew
https://docs.brew.sh
但是我记得之前使用过一个叫做brew cask install xxxx
的方式来安装某些程序,这一次特地去找了一找关于它的用法。
➜ ~ brew cask help
Homebrew Cask provides a friendly CLI workflow for the administration
of macOS applications distributed as binaries.
Commands:
audit verifies installability of Casks
cat dump raw source of the given Cask to the standard output
create creates the given Cask and opens it in an editor
doctor checks for configuration issues
edit edits the given Cask
fetch downloads remote application files to local cache
home opens the homepage of the given Cask
info displays information about the given Cask
install installs the given Cask
list with no args, lists installed Casks; given installed Casks, lists staged files
outdated list the outdated installed Casks
reinstall reinstalls the given Cask
style checks Cask style using RuboCop
uninstall uninstalls the given Cask
upgrade upgrades all outdated casks
zap zaps all files associated with the given Cask
See also "man brew-cask"
这个cask可以用来装一些atom、Google Chrome之类的图形化应用。记得之前安装的是一个Android开发工具之一的ADB以及一个视频播放器iina,用list查看如下:
➜ ~ brew cask list
android-platform-tools iina
安装nginx
# 更新软件列表
➜ ~ brew update
Already up-to-date.
# 搜索nginx相关的软件
➜ ~ brew search nginx
==> Formulae
nginx ✔
# 查看nginx相关的信息
➜ ~ brew info nginx
nginx: stable 1.15.3 (bottled), HEAD
HTTP(S) server and reverse proxy, and IMAP/POP3 proxy server
https://nginx.org/
/usr/local/Cellar/nginx/1.15.3 (23 files, 1.4MB) *
Poured from bottle on 2018-09-12 at 15:32:54
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/nginx.rb
==> Dependencies # 依赖相关,安装时会自动安装上
Required: openssl ✘, pcre ✘
Optional: passenger ✘
==> Options
--with-passenger
Compile with support for Phusion Passenger module
--HEAD
Install HEAD version
==> Caveats
Docroot is: /usr/local/var/www # 文档位置
# 这里解释了为什么会监听8080端口的原因,这样就可以不用sudo也能启动nginx
# 这里可以注意一下nginx.conf的位置
The default port has been set in /usr/local/etc/nginx/nginx.conf to 8080 so that
nginx can run without sudo.
# 启动时会加载这个目录下的配置文件,在上面的配置文件中有相应的配置
nginx will load all files in /usr/local/etc/nginx/servers/.
To have launchd start nginx now and restart at login:
brew services start nginx #启动nginx的方式之一
Or, if you do not want/need a background service you can just run:
nginx #启动nginx的方式之二,感觉我一般会倾向于用这个,毕竟mac不会一直用来当服务器。
==> Analytics
install: 35395 (30d), 114392 (90d), 354080 (365d)
install_on_request: 32185 (30d), 99518 (90d), 300056 (365d)
build_error: 103 (30d)
➜ ~ brew install nginx # 这里已经安装过了,输出请忽略
Warning: nginx 1.15.3 is already installed and up-to-date
To reinstall 1.15.3, run `brew reinstall nginx`
运行
直接输入nginx,便运行成功。修改配置文档后,需要使用nginx -s reload
进行重新加载;需要停止时,则使用nginx -s stop
即可。
配置Tomcat的负载均衡集群
upstream tomcatclustertest.com{
// 这是一个在本机运行的tomcat服务器
server 127.0.0.1:8088 weight=1;// weight表示按权重分配请求
// 这是一个在虚拟机中运行的tomcat服务器
server 192.168.31.104:8080 weight=2;
}
server {
listen 8080;// 监听8080端口的请求
server_name localhost; // 服务器名字为localhost
access_log /usr/local/etc/nginx/logs/access.log combined; // 日志输出文件
index index.html index.htm index.jsp index.php;
#error_page 404 /404.html;
if ( $query_string ~* ".*[\;'\<\>].*" ) {
return 404;
}
location / {
// 将请求分配给tomcatclustertest.com这个集群,即上面的upstream中的两个tomcat组成的服务器集群
proxy_pass http://tomcatclustertest.com;
proxy_redirect default;
}
}
nginx负载均衡的策略
-
轮询(默认)
优点:实现简单
缺点:不考虑每台服务器的处理能力
配置示例如下:
upstream www.xxx.com {
# 需要负载的server列表
server www.xxx.com:8080;
server www.xxx.com:9080;
}
- 权重,使用的较多的策略
优点:考虑了每台服务器处理能力的不同,哪台机器性能高就给哪台机器的权重高一些
配置示例如下:
upstream www.xxx.com {
# 需要负载的server列表,weight表示权重,weight默认为1,如果多个配置权重的节点,比较相对值
server www.xxx.com:8080 weight=15;
server www.xxx.com:9080 weight=10;
}
- ip hash
优点:能实现同一个用户始终访问同一个服务器
缺点:根据 ip hash 不一定平均
配置示例如下:
upstream www.xxx.com {
ip_hash;
# 需要负载的server列表
server www.xxx.com:8080;
server www.xxx.com:9080;
}
- url hash (第三方插件)
优点:能实现同一个服务访问同一个服务器,也就是根据url进行负载
缺点:和ip hash一样,根据 url hash 分配请求不一定平均,请求频繁的url会请求到同一台服务器上
配置示例如下(需要事先安装插件)
upstream www.xxx.com {
# 需要负载的server列表
server www.xxx.com:8080;
server www.xxx.com:9080;
hash $request_uri;
}
- fair (第三方插件)
特点:按后端服务器的响应时间来分配请求,响应时间短的优先分配
配置示例如下(需要事先安装插件)
upstream www.xxx.com {
# 需要负载的server列表
server www.xxx.com:8080;
server www.xxx.com:9080;
fair;
}
一些负载均衡参数简介:
upstream www.xxx.com {
ip_hash;
# 需要负载的server列表
server www.xxx.com:8080 down; # down表示当前的server暂时不参与负载
server www.xxx.com:9080 weight=2; # weight默认值为1,weight的值越大,负载的权重就越大
server www.xxx.com:7080 backup; # 其他所有的非backup机器,在down掉或者很忙的时候,才请求backup机器,也就是一个备用机器
server www.xxx.com:6080;
}
参考:
https://www.cnblogs.com/meng1314-shuai/p/8335140.html
https://blog.csdn.net/wang379275614/article/details/47778201
http://blog.51cto.com/zero01/2112989
上一篇: 列举工作中常用的几个git命令?
下一篇: Ubuntu创建和删除用户