打开浏览器,在浏览器中访问www.678.com,跳转到linux系统的服务器上tomcat主页面中;
2.准备工作
#前提:linux有java环境,检查java,如果没有就百度一下安装
java -version
#下载 apache-tomcat-7.0.105.tar.gz放在/usr/src目录
#解压:
tar -zxvf apache-tomcat-7.0.105.tar.gz
#进入apache-tomcat-7.0.105/bin:
cd apache-tomcat-7.0.105/bin
#执行startup.sh
[root@localhost bin]# ./startup.sh
#启动tomcat后查看日志:apache-tomcat-7.0.105/logs/catalina.out
cd apache-tomcat-7.0.105/logs/
tail -f catalina.out
2.2 对外开放访问的端口,例子:8080端口(原因tomcat中conf/server.xml中默认端口8080,可以自己任意修改)
sudo firewall-cmd --add-port=8080/tcp --permanent
#重新防火墙:
firewall-cmd --reload
2.3 结果:上面步骤做完之后,在你windows上使用浏览器访问linux的ip:8080(如:http:192.xxx.0.95:8080)就会进入tomcat的主页;
3.访问过程分析
步骤1:在hosts文件(C:\Windows\System32\drivers\etc)中添加域名与ip的映射
完成第一步后,可以实现通过www.678.com:8080访问tomcat的主页(这里都还没有涉及nginx)
步骤2:在nginx中做反向代理配置:nginx目录下conf文件的nginx.conf
使用nginx反向代理,根据访问的路径跳转到不同端口的服务中,nginx监听端口为9001;
如:
访问 http://www.678.com:9001/edu/ 直接跳转到192.168.201.128:8080的tomcat的webapps页面
访问 http://www.678.com:9001/vod/ 直接跳转到192.168.201.128:8081的tomcat的webapps页面
2.1 准备两个tomcat,一个端口为8080;一个端口为8081;教程访问:tomcat多开webapps
2.2 准备两个html(如:a.html;b.html)文件分别放在tomcat/webapps/edu/ 和tomcat/webapps1/vod/中,当然edu,和vod两个文件夹自己在对应的webapps中创建;(备注:这里创建在webapps中的文件在浏览器url中是有体现的;)
3.1 在nginx中做反向代理配置:nginx目录下conf文件的nginx.conf
实现效果:不同路径,结果不同;
1.1 相继在浏览器地址栏输入地址http://192.168.201.128/edu/a.html,负载均衡效果,平均分配到8080、8085端口中;
2.1 安装两个tomcat服务器,配置好,一个默认端口8080;一个默认端口8085;他们的webapps中都创建一个edu文件夹,为了看到访问同样的路径,结果不同,将文件夹里面放不同内容的a.html文件;
4.结果:访问http://192.168.201.128/edu/a.html,这一链接,实则是不同端口(8080,8085)在服务;(在tomcat的webapps中放置名称相同但里面内容不同的html就可以在浏览器中看到不同的结果;)
第一种 轮询(默认);
如果在运行中,某一台服务器down掉,nginx会自动剔除;
第二种 weight;
即:权重;在nginx.conf中配置upstream时,加上每个ip:port的weight值;
第三种 ip_hash;
每个请求按访问者的ip的hash结果分配,这样每个访客访问一个后端服务器,可以解决session问题。具体配置方式:
第四种 fair;
按照后端服务器的响应时间来分配请求,响应时间短的优先分配;(注意:nginx负载均衡fair模块安装和配置)具体配置方式:
主流方式:纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案;
4.1.1 准备工作:在根目录下创建data目录,里面准备两个静态内容,如下:
4.1.2 实现效果:通过nginx实现对静态资源的访问;【注意:这里是使用nginx,和tomcat没关系】
效果:autoindex on的作用:列出目录的资源
效果:当主nginx服务器挂掉了,会启用备用nginx;
需要资源:两台nginx服务器、需要keepalived、需要虚拟ip;
准备工作:
1.两台服务器(虚拟机代替)192.168.201.128 192.168.201.129
2.两台服务器都安装上nginx
3.安装keepalived
#在usr目录下
yum install keepalived -y
#检查是否安装
rpm -q -a keepalived
4.安装之后,在etc里面生成目录keepalived,有文件keepalived.conf
#配置keepalived.conf;在/etc/keepalived/目录下
cd /etc/keepalived/
#vim keepalived.conf
#使用下面的,覆盖原文件内容;下面的内容请根据备注进行主从服务器的区别设置;
global_defs {
notifcation email {
[email protected]
[email protected]
[email protected]
}
notification_email_from [email protected]
smtp_server 192.168.201.128
// 路由访问到主机,router_i后面跟的是etc/hosts文件中配置的:127.0.0.1 ithing中的ithing
router_id ithing
}
vrrp_script chk_http_port {
script "/usr/local/src/nginx_check.sh" //检查脚本的位置
interval 2 //(检查脚本执行的间隔)
weight -2 // 设置当前主服务器的权重
}
vrrp_instance VI_1 {
state MASTER //备份服务器上将MASTER 改为 BACKUP
interface ens33 //网卡:使用ifconfig,ip所在的哪一项
virtual_router_id 51 //主、备机的virtual_router_id必须相同
priority 90 //主、备机取不同的优先级,主机值较大,备份机值较小;
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.201.50 //vrrp H虚拟地址
}
}
在/usr/local/src/nginx_check.sh的检查脚本的内容:
#!/bin/bash
A='ps -C nginx -no-header |wc -1'
if [$A -eg 0 ];then
/usr/local/nginx/sbin/nginx
sleep 2
if ['ps -C nginx --no-header |wc -1' -eg 0 ];then
killall keepalived
fi
fi
分别启动两台服务器的nginx、keepalived;
#在nginx的/sbin/目录下
#启动nginx
./nginx
#同样在该目录下,启动keepalived
systemctl start keepalived.service
结果: