(第十五周作业)
1、LVS实现nat,dr。
(1) LVS实现nat
准备三台虚拟机ABC
A:
# yum install ipvsadm -y
B:
# yum install httpd -y
# service httpd restart
# echo "this is rs1"> /var/www/html/index.html
C:
# yum install httpd -y
# service httpd restart
# echo "this is rs2"> /var/www/html/index.html
A机做为LVS调度器,双网卡,第一张网卡为仅主机模式,配置DIP:192.168.159.130,第二张网卡为桥接模式,配置VIP:192.168.1.6
B机做RS1,单网卡,网卡为仅主机模式,配置RIP:192.168.159.129 网关为:92.168.159.130
C机做RS2,单网卡,网卡为仅主机模式,配置RIP:192.168.159.131 网关为:92.168.159.130
在ABC三台机器上关闭防火墙和selinux
关闭防火墙:service firewalld stop 关闭selinux: setenforce 0
在ABC三台机器上进行保持时间一致
# ntpdate -uasia.pool.ntp.org
在A机上打开ipforward功能
#echo 1 >/proc/sys/net/ipv4/ip_forward
在A机创建LVS
#ipvsadm -A -t 192.168.1.6:80 -s rr
#ipvsadm -a -t 192.168.1.6:80 -r 192.168.159.129 -m
#ipvsadm -a -t 192.168.1.6:80 -r 192.168.159.131 -m
由于在windows中的浏览器中一般都会有缓存,其调度可能会失效,使用Linux中的curl等命令访问则是没有问题的。能够正常的实现调度。
可以通过再创建一台虚拟机,单网卡,网卡为桥接模式。启动后执行(多次执行)
#curlhttp://192.168.1.6
可以看到显示内容有时显示rs1,有时显示rs2,次数基本一样。使用以下命令查看调度的均衡性情况。
#ipvsadm -L -n --rate
(2) LVS实现dr
准备三台虚拟机ABC
A:
# yum install ipvsadm -y
B:
# yum install httpd -y
# service httpd restart
# echo "this is rs1"> /var/www/html/index.html
C:
# yum install httpd -y
# service httpd restart
# echo "this is rs2"> /var/www/html/index.html
A机做为LVS调度器 ip为:192.168.100.1
B机做RS1 ip为192.168.100.10
C机做RS2 ip为192.168.100.11
在ABC三台机器上关闭防火墙和selinux
关闭防火墙:service firewalld stop 关闭selinux: setenforce 0
在ABC三台机器上进行保持时间一致
# ntpdate -uasia.pool.ntp.org
在B机和C机上执行:
# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.100.100
NETMASK=255.255.255.255
BROADCAST=192.168.100.100
ONBOOT=yes
NAME=loopback
# ifdown lo:0
# ifup lo:0
# route add -host 192.168.100.100 dev lo:0
在A机上执行:
# vim /etc/sysconfig/network-scripts/ifcfg-eth1:0
DEVICE=eth1:0
IPADDR=192.168.100.100
NETMASK=255.255.255.255
BROADCAST=192.168.100.100
ONBOOT=yes
# ifdown eth1:0
# ifup eth1:0
# route add -host 192.168.100.100 dev eth1:0
在A机上打开ipforward功能
#echo 1 >/proc/sys/net/ipv4/ip_forward
# ipvsadm -A -t 192.168.100.100:80 -s wlc
# ipvsadm -a -t 192.168.100.100:80 -r 192.168.100.10 -g -w 2
# ipvsadm -a -t 192.168.100.100:80 -r 192.168.100.11 -g -w 1
再创建一台虚拟机,启动后执行(多次执行)
#curlhttp://192.168.100.100
可以看到显示内容有时显示rs1,有时显示rs2,
2、nginx反向代理,虚拟主机。
(1)基本IP的虚拟主机
创建一个centos7.2虚拟机,固定IP,设置三个IP:192.168.184.136, 192.168.184.160, 192.168.184.161
#cd /etc/sysconfig/network-scripts/
#cp ifcfg-eno16777736 ifcfg-eno16777736.bak
#vi ifcfg-eno16777736
注释掉
#BOOTPROTO=dhcp
尾部增加
#static
#表示该接口将通过该配置文件进行设置,而不是通过网络管理器进行管理
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=192.168.184.136
IPADDR1=192.168.184.160
IPADDR2=192.168.184.161
NETMASK=255.255.255.0
GATEWAY=192.168.184.2
#vi /etc/sysconfig/network
# Created by anaconda
NETWORKING=yes
GATEWAY=192.168.184.2
DNS1=119.29.29.29
DNS2=182.254.116.116
#service network restart
#ip a查看IP配置情况
安装nginx
# yum install pcre-devel openssl-devel zlib-devel -y
#tar -xf nginx-1.14.2.tar.gz
#cd nginx-1.14.2
#./configure --prefix=/usr/local/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_dav_module --with-http_stub_status_module --with-threads --with-file-aio
#make && make install
准备web网页
#cd /usr/local/nginx
#cp -r html html-136
#cp -r html html-160
#cp -r html html-161
编辑在以下网页内容中添加IP地址已示区别
#vi html-136/index.html
#vi html-160/index.html
#vi html-161/index.html
#cd /etc/nginx/
#cp nginx.conf nginx.conf.bak
#vi nginx.conf
server {
listen 80;
server_name 192.168.184.136;
location / {
root html-136;
index index.html index.htm;
}
}
server{
listen 80;
server_name 192.168.184.160;
location / {
root html-160;
index index.html index.htm;
}
}
server{
listen 80;
server_name 192.168.184.161;
location / {
root html-161;
index index.html index.htm;
}
}
启动nginx
#cd /usr/local/nginx/sbin
#./nginx
在宿主机的浏览器查看以下三个网页,发现内容是不同的(因为我们前面编辑过使用三个目录下的index.html不一样)
http://192.168.184.136/
http://192.168.184.160/
http://192.168.184.161/
(2)基本端口的虚拟主机
基于端口的虚拟主机和基于ip的虚拟主机配置几乎一样,只是在修改Nginx配置文件时,只修改监听的端口和root对应的目录,其他的没有变
在前面的操作的基础上修改配置文件。
#vi /etc/nginx/nginx.conf
server {
listen 80;
server_name 192.168.184.136;
location / {
root html-136;
index index.html index.htm;
}
}
server{
listen 81;
server_name 192.168.184.136;
location / {
root html-160;
index index.html index.htm;
}
}
server{
listen 82;
server_name 192.168.184.136;
location / {
root html-161;
index index.html index.htm;
}
}
重新加载nginx配置文件
#cd /usr/local/nginx/sbin
#./nginx -s reload
查看监听端口
#ss -lnt
在宿主机的浏览器查看以下三个网页,发现内容是不同的(因为我们前面编辑过使用三个目录下的index.html不一样)
http://192.168.184.136:80/
http://192.168.184.136:81/
http://192.168.184.136:82/
(3)基本域名的虚拟主机
#vi /etc/nginx/nginx.conf
server {
listen 80;
server_name www.a.com;
location / {
root html-136;
index index.html index.htm;
}
}
server{
listen 80
server_name www.b.com
location / {
root html-160;
index index.html index.htm;
}
}
server{
listen 80
server_namewww.c.com;
location / {
root html-161;
index index.html index.htm;
}
}
重新加载nginx配置文件
#cd /usr/local/nginx/sbin
#./nginx -s reload
修改宿主机的hosts文件:
C:\Windows\System32\drivers\etc\hosts
添加以下三行内容
192.168.184.136 www.a.com
192.168.184.136 www.b.com
192.168.184.136 www.c.com
在宿主机的浏览器查看以下三个网页,发现内容是不同的(因为我们前面编辑过使用三个目录下的index.html不一样)
http://www.a.com
http://www.b.com
http://www.c.com
(4)nginx 反向代理
安装jdk
上传jdk-8u151-linux-x64.rpm
#rpm -ivh jdk-8u151-linux-x64.rpm
配置环境变量
vi ~/.bash_profile
尾部增加以下两行内容
export JAVA_HOME=/usr/java/jdk1.8.0_151/
export PATH=$JAVA_HOME/bin:$PATH
运行一下环境变量配置文件
. .bash_profile
上传apache-tomcat-7.0.75.tar.gz
tar -zxf apache-tomcat-7.0.75.tar.gz
mv apache-tomcat-7.0.75 tomcat1
cp -r tomcat1 tomcat2
编辑在以下网页内容中使其看起来有区别
vi tomcat1/webapps/ROOT/index.jsp
vi tomcat2/webapps/ROOT/index.jsp
tomcat1的端口不需要修改,但是tomcat2的端口需要修改
vi tomcat2/conf/server.xml
找到以下三行内容并修改(注意别改到注释内容里面去,而把有效的内容漏掉修改)
启动两个tomcat
tomcat1/bin/startup.sh
tomcat2/bin/startup.sh
查看网页是否显示正常
http://192.168.184.136:8080
http://192.168.184.136:8081
准备好两个tomcat环境后,编辑nginx配置文件
vi /etc/nginx/nginx.conf
http {
....
upstream tomcat1{
server 192.168.184.136:8080;
}
upstream tomcat2{
server 192.168.184.136:8081;
}
server {
listen 80;
server_name 192.168.184.136;
location / {
proxy_passhttp://tomcat1;
index index.html index.htm;
}
}
server {
listen 80;
server_name 192.168.184.160;
location / {
proxy_passhttp://tomcat2;
index index.html index.htm;
}
}
}
重新加载nginx配置文件
#cd /usr/local/nginx/sbin
#./nginx -s reload
在宿主机的浏览器查看以下两个网页,发现内容是不同的(因为我们前面编辑过两个tomcat中的index.jsp)
http://192.168.184.136/
http://192.168.184.160/