基本环境搭建
禁用防火墙
iptables -F:关闭
iptables -L: 查看
关闭安全系统SElinux
方法一:临时关闭(不用重启机器):
setenforce 0 ##设置SELinux 成为permissive模式
##setenforce 1 设置SELinux 成为enforcing模式
方法二:修改配置文件需要重启机器:
修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled
重启机器即可
安装一定的支持与工具
yum -y install gcc gcc-c++ autoconf pcre pcre-devel make automake //c语言库的编译工具
yum -y install wget httpd-tools vim //wget:网络下载工具
nginx下载安装
cd /usr/local
mkdir nginx
cd nginx
第一步,下载安装包和nginx相关依赖包
下载nginx :wget http://nginx.org/download/nginx-1.8.0.tar.gz
下载openssl : wget http://www.openssl.org/source/openssl-fips-2.0.9.tar.gz
下载zlib : wget http://zlib.net/zlib-1.2.11.tar.gz
下载pcre : wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.38.tar.gz
第二步,编译安装
openssl :
tar zxvf openssl-fips-2.0.9.tar.gz
cd openssl-fips-2.0.9
./config && make && make install
pcre:
cd ../ 返回
tar zxvf pcre-8.38.tar.gz
cd pcre-8.38
./configure && make && make install
zlib:
cd ../ 返回
tar zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure && make && make install
nginx
cd ../ 返回
tar zxvf nginx-1.8.0.tar.gz
cd nginx-1.8.0
./configure && make && make install
第三步:启动nginx
cd /usr/local/nginx/sbin/
./nginx
ps -ef | grep nginx
效果如图显示
nginx入门实现反向代理
nginx常用命令
在sbin 目录下 通过./ 启动命令
./nginx -s stop # 快速关闭Nginx,可能不保存相关信息,并迅速终止web服务。
nginx -s quit #平稳关闭Nginx,保存相关信息,有安排的结束web服务。
nginx -s reload #因改变了Nginx相关配置,需要重新加载配置而重载。
nginx -s reopen #重新打开日志文件。
nginx -c filename #为 Nginx 指定一个配置文件,来代替缺省的。
nginx -t #不运行,而仅仅测试配置文件。nginx 将检查配置文件的语法的正确性,并尝试打开配置文件中所引用到的文件。
nginx -v #显示 nginx 的版本。
nginx -V #显示 nginx 的版本,编译器版本和配置参数。
linux安装jdk与tomcat
安装jdk
进入jdk rz文件:jdk-9.0.1_linux-x64_bin.tar.gz
解压
tar –zxvf jdk-9.0.1_linux-x64_bin.tar.gz
配置环境变量:
vim /etc/profile
G进入最后添加:
JAVA_HOME=/usr/local/jdk/jdk-9.0.1
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
保存退出
从新加载配置文件
source /etc/profile
安装tomcat
进入tomcat rz文件:apache-tomcat-9.0.4.tar.gz
tar -zxvf apache-tomcat-9.0.4.tar.gz
改名:
启动:进入bin目录 执行 ./startup.sh
防火墙什么的已经关闭了 可以在外面直接访问了
访问地址:虚拟机IP:8080
3.配置单台tomcat服务器反向代理
1.进入nginx的配置文件目录
vim nginx.conf (不要配错了,配错了就q!退出来重配,不然容易出问题)
#运行用户 #user nobody; #启动进程 通常设置与cpu数量相同 worker_processes 1; #错误日志路径配置 #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #记录当前nginx启动的历史进程PID #pid logs/nginx.pid;
#工作模式及连接数上限,单个后台worker 进程的最大并发连接数 events { worker_connections 1024; }
#设定http服务器,利用它的反向代理功能提供负载均衡支持 http { include mime.types; default_type application/octet-stream; #日志格式 #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main; #上面已经有描述了 sendfile on; #tcp_nopush on; #链接超时时间 #keepalive_timeout 0; keepalive_timeout 65;
#gzip on; #设置代理的服务器列表 这儿暂时一台 指向虚拟机本机的8080tomcat upstream hellonginx{ server 127.0.0.1:8080; } #http服务器 server { #监听端口80 也就是输入该虚拟机ip就直接访问的端口 listen 80; #定义域名访问 与windows中配置的虚拟域名对应 server_name nginx.test.com; #编码格式 charset utf-8; #代理配置超时、头信息等参数 可以不配置 proxy_connect_timeout 180; proxy_send_timeout 180; proxy_read_timeout 180; proxy_set_header Host $host; proxy_set_header X-Forwarder-For $remote_addr; #access_log logs/host.access.log main; # #反向代理路径(和upstream绑定) location / { proxy_pass http://hellonginx; }
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html # #错误页面配置 可以不配置 error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } |
重启nginx
配置windows的虚拟路径
打开Host文件,添加IP
你的虚拟机ip 你刚才配置的Server_name(nginx.test.com)
例如:192.168.1.164 nginx.test.com
访问域名即可
流程是,
nginx.test.com 通过本机虚拟域名,映射到
172.18.37.96 访问某个ip地址默认就是80端口 所以进入了nginx
nginx监听到域名nginx.test.com 进入location的proxy_pass hellonginx
然后upstream代理的tomcat服务器名字也是hellonginx, 所以就被分发到了
Tomcat 127.0.0.1:8080
配置多台tomcat实现负载均衡
复制tomcat1 改名为tomcat2
修改三个端口号
进入tomcat2配置文件conf中 修改server.xml
为了区分我们把8081的小猫去掉
保存退出 分别进入两个tomcat的bin目录 ./startup.sh启动
一台有猫一台没有(不推荐使用chrome)
nginx代理两台实现负载均衡
修改nginx配置文件
重启nginx
./nginx -s reload
nginx负载均衡策略
1. weight(权重)
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况
如下所示,10.0.0.88的访问比率要比10.0.0.77的访问比率高一倍。
upstream linuxidc{
server 10.0.0.77 weight=5;
server 10.0.0.88 weight=10;
}
2.ip_hash(访问ip)
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
upstream favresin{
ip_hash;
server 10.0.0.10:8080;
server 10.0.0.11:8080;
}
3. fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。与weight分配策略类似。
upstream favresin{
server 10.0.0.10:8080;
server 10.0.0.11:8080;
fair;
}
4.url_hash(第三方)
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
注意:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法。
upstream resinserver{
server 10.0.0.10:7777;
server 10.0.0.11:8888;
hash $request_uri;
hash_method crc32;
}