#虚拟机安装CentOS7

###软件环境
虚拟机:VMware-workstation-14.0.0

Linux:CentOS-7-x86_64-DVD-1810.iso镜像文件

虚拟机所在电脑系统:win10

##安装步骤
· 安装VMware

无脑下一步(许可证**:CG54H-D8D0H-H8DHY-C6X7X-N2KG6)

·下载Linux系统镜像文件

官方地址:https://www.centos.org/download/
(随便选个地址进行下载)

Nginx实现Tomcat集群流程+keepalived虚拟IP

·VMware中安装linux系统

点击【文件】,选择【新建虚拟机】。
选择自定义(高级),下一步。
使用的VMware版本是14,默认选择,下一步。
选择安装刚下载的镜像文件(稍后安装也可以,在主页可以设置)

Nginx实现Tomcat集群流程+keepalived虚拟IP

进入系统命名界面,
选择系统安装位置(**注意**  安装位置不能存放在VMware的安装路径,会导致安装权限问题)
点击下一步,默认即可
网络选择:使用网络地址转换(安装后设置桥接)

Nginx实现Tomcat集群流程+keepalived虚拟IP

网络的选择:(可以在安装完成后进行设置)

Bridged(桥接模式):独立ip,局域网中的一独立的主机,它可以访问网内任何一台机器。
需要手工为虚拟系统配置IP地址、子网掩码,而且还要和宿主机器处于同一网段,这样虚拟系统才能和宿主机器进行通信。
如果你想利用VMware在局域网内新建一个虚拟服务器,为局域网用户提供网络服务,就应该选择桥接模式。

NAT(网络地址转换模式):使用NAT模式可以实现在虚拟系统里访问互联网。
NAT模式下的虚拟系统的TCP/IP配置信息是由VMnet8(NAT)虚拟网络的DHCP服务器提供的,无法进行手工修改,
因此虚拟系统也就无法和本局域网中的其他真实主机进行通讯。
如果你想利用VMware安装一个新的虚拟系统,在虚拟系统中不用进行任何手工配置就能直接访问互联网,建议你采用NAT模式。

Host-only(主机模式):
如果你想利用VMware创建一个与网内其他机器相隔离的虚拟系统,进行某些特殊的网络调试工作,可以选择Host-only模式。

Nginx实现Tomcat集群流程+keepalived虚拟IP

Nginx实现Tomcat集群流程+keepalived虚拟IP

点击下一步,等加载完成

Nginx实现Tomcat集群流程+keepalived虚拟IP


进行选择语言,点击继续

Nginx实现Tomcat集群流程+keepalived虚拟IP

不用更改,点进去完成即可,设置root的密码,等待加载。加载完成点击重启。

Nginx实现Tomcat集群流程+keepalived虚拟IP

##至此 系统镜像安装完成
##按照此方式建立四个系统镜像

###配置系统网络环境

点击虚拟机左侧,选中安装的系统,右键,设置,查看网络连接信息,【硬件】页签,
选择【网络适配器】,网络连接选择【NAT...】,点击【确定】按钮 

Nginx实现Tomcat集群流程+keepalived虚拟IP

在虚拟机中,选中安装的系统,点击工具条中的【编辑】-选择【虚拟网络编辑器】
选中【VMnet8】,点击【NAT设置】,查看本地IP网段
点击【DHCP设置】,查看IP起始段,方便设置IP地址 

Nginx实现Tomcat集群流程+keepalived虚拟IP

	IP			主机名	
192.168.135.111	nginx01 
192.168.135.112	nginx02	
192.168.135.113	nginx03
192.168.135.114	nginx04


进入命令窗口,切换到root的根目录,输入命令:vi /etc/sysconfig/network-scripts/ifcfg-ens33 

Nginx实现Tomcat集群流程+keepalived虚拟IP

修改并增加如下内容信息,完成之后,保存退出

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=默认即可
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.135.226
GATEWAY=192.168.135.2
NETMASK=255.255.255.0
DNS1=114.114.114.114

Nginx实现Tomcat集群流程+keepalived虚拟IP

输入命令,使配置有效service network restart 

Nginx实现Tomcat集群流程+keepalived虚拟IP

–配置完毕后,查询IP信息,并确认是否网络畅通

配置完成ip:192.168.135.226
监测:ping www.baidu.com

Nginx实现Tomcat集群流程+keepalived虚拟IP

#至此安装镜像配置IP完成
#四个全部配好IP,确保ping同外网及局域网.

若之间ping不通,进行关闭防火墙
centos7以前关闭防火墙
service iptables stop

centos从7开始默认用的是firewalld,这个是基于iptables的,
虽然有iptables的核心,但是iptables的服务是没安装的。所以你只要停止firewalld服务即可: 
systemctl stop firewalld.service && systemctl disable firewalld.service

查看防火墙状态:
service iptables status
若报错:
Redirecting to /bin/systemctl status iptables.service
Unit iptables.service could not be found.
进行加载:
yum install iptables-services  

Nginx实现Tomcat集群流程+keepalived虚拟IP

####在虚拟机安装Linux操作系统常见问题和解决方案

以防万一,先安装好iptables服务(不管你装没装,先执行,免得后面添乱)
[[email protected] ~]# yum install iptables-services
[[email protected] ~]# systemctl mask firewalld.service
[[email protected] ~]# systemctl enable iptables.service
[[email protected] ~]# systemctl enable ip6tables.service
进入iptables配置80端口,因为nginx默认是由80端口访问
[[email protected] ~]# vim /etc/sysconfig/iptables
这是配置信息:
# Generated by iptables-save v1.4.21 on Fri May 12 21:28:29 2017
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [6:696]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT(我给vsftpd配置的端口)
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT(给nginx配置的端口,原样输入就行了)
-A INPUT -p tcp -m state --state NEW -m tcp --dport 30000:30999 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Fri May 12 21:28:29 2017
然后:wq,保存退出就行了
重启iptables,配置才生效
[[email protected] ~]# systemctl restart iptables.service
开启防火墙,不管你开没有,再开一遍:
[[email protected] ~]# systemctl start firewalld
开启http访问
[[email protected] ~]# firewall-cmd --permanent --add-service=http
加入80端口
[[email protected] ~]# firewall-cmd --permanent --zone=trusted --add-port=80/tcp

#####问题1:ifconfig 如果不好使—command not found,进行如下操作

-	打开/etc/profile文件,在其中输入export PATH=$PATH:/sbin
-	确认上部操作  中 ONBOOT=yes 
-	init 6 重启
-	执行    yum install -y net-tools         安装:net-tools

Nginx实现Tomcat集群流程+keepalived虚拟IP

#####问题2:开启虚拟机的时候提示如下图片问题

Nginx实现Tomcat集群流程+keepalived虚拟IP

-- 百度自己电脑型号,查看如何快捷键进入的BIOS设置界面
-- 重启计算机,重启的过程中,不停的按进入的快捷键
-- 进入到BIOS设置界面后,将虚拟服务开启(默认是关闭状态)
-- 如果不知道如何开启,可自行百度自己电脑型号如何开启虚拟化服务

#####问题3:开启虚拟机黑屏

-- 以管理员身份运行cmd(命令符)
-- 输入命令:netsh winsock reset,回车,提示重置网络服务成功后
-- 重启计算机

#####问题4:XXXXX连接套接字次数过多

-- “我的电脑”,右键,“管理”,找到虚拟机的服务
-- 将虚拟机的服务,都设置为“已启动”
-- 重新启动虚拟机即可	

Nginx实现Tomcat集群流程+keepalived虚拟IP


##将4个系统 连接到可视化工具和FTP工具

Nginx实现Tomcat集群流程+keepalived虚拟IP

##Linux下如何搭建Java环境

###软件环境

虚拟机:VMware-workstation-14.0.0 

系统:CentOS-7-x86_64

###搭建步骤

首先确认当前系统是否已经存在Java环境

Nginx实现Tomcat集群流程+keepalived虚拟IP

明确下各个文件夹的含义

Nginx实现Tomcat集群流程+keepalived虚拟IP

新建upload文件夹,把jdk安装包通过FTP工具导入
进入到/upload目录下

cd /upload
tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/local

四个系统全部进行解压安装

tar -zvxf 解压

Nginx实现Tomcat集群流程+keepalived虚拟IP

配置环境变量

	vi /etc/profile
	在文件最后添加:
	export JAVA_HOME=/usr/local/jdk1.8.0_171
	export PATH=$PATH:$JAVA_HOME/bin

刷新环境变量

	source /etc/profile

查看安装后的JDK版本

java -version

Nginx实现Tomcat集群流程+keepalived虚拟IP


###至此Java环境搭建完成
##四个Java环境及IP完成


##对Tomcat的安装部署

1.解压安装包

2.更改两个tomcat的配置文件

启动 ./startup.sh 
	
	如果启动时权限不够,输入命令:chmod u+x *.sh

访问 ip:端口号  

3.端口不可访问

输入命令:

firewall-cmd --zone=public --add-port=8080/tcp --permanent

进行8080端口开放配置;(如果mysql远程访问 10060异常,也是端口问题,开放3306)

命令解析:

--zone #作用域

--add-port=8080/tcp #添加端口,格式为:端口/通讯协议

--permanent #永久生效,没有此参数设置,重启后会失效。

重启防火墙,输入命令:

firewall-cmd --reload

成功访问端口号。

###访问地址:
ip:8080
确保能够tomcat能够正常使用


###tomcat配置完成

##nginx配置

1.上传nginx-1.8.1.tar.gz到Linux上

2.解压nginx
[[email protected] upload]# tar -zxvf nginx-1.8.1.tar.gz -C /usr/local/src

3.编译nginx
[[email protected] upload]# cd /usr/local/src/nginx-1.8.1/
[[email protected] nginx-1.8.1]# ./configure --prefix=/usr/local/nginx-1.8.1
checking for OS
 + Linux 2.6.32-431.el6.x86_64 x86_64
checking for C compiler ... not found
./configure: error: C compiler cc is not found
#缺包报错 ./configure: error: C compiler cc is not found
#使用YUM安装缺少的包
[[email protected] nginx-1.8.1]# yum -y install gcc pcre-devel openssl openssl-devel
再次执行:
[[email protected] nginx-1.8.1]# ./configure --prefix=/usr/local/nginx-1.8.1

4.编译安装nginx
[[email protected] nginx-1.8.1]# make && make install

5.启动nginx
[[email protected] sbin]# cd /usr/local/nginx-1.8.1/sbin
[[email protected] sbin]# ./nginx

6.访问http://192.168.135.111

Nginx实现Tomcat集群流程+keepalived虚拟IP

补充:
nginx -s reload  :修改配置后重新加载生效
nginx -s reopen  :重新打开日志文件
nginx -t -c /path/to/nginx.conf 测试nginx配置文件是否正确

关闭nginx:
nginx -s stop  快速停止nginx
或关闭nginx命令:./nginx -s stop 
nginx -squit  完整有序的停止nginx

其他的停止nginx 方式:
ps -ef | grep nginx查看nginx进程

kill -QUIT 主进程号    从容停止Nginx
kill -TERM 主进程号   快速停止Nginx
kill -9 nginx         强制停止Nginx

启动nginx:
nginx -c /path/to/nginx.conf
平滑重启nginx:
kill -HUP 主进程号

##开始配置nginx和tomcat的负载均衡 (一台电脑版)

解压两个Tomcat,分别命名指定名称
修改这两个Tomcat的启动端口,如:8081\8082,打开Tomcat的conf目录下的server.xml,需要修改
22/69/71/91行左右的数字,91行两个数字,修改后启动正常访问
(开启访问的端口)
(为了集群的负载均衡明显,可以修改上面两个Tomcat的默认页面,随便改一下即可.
		--在webapps\Root\index.jsp文件)

访问如图:

Nginx实现Tomcat集群流程+keepalived虚拟IP

开始配置Nginx来实现负载均衡

配置Nginx的配置文件 -- nginx/conf/nginx.conf  文件

修改nginx.conf文件,如下:

Nginx实现Tomcat集群流程+keepalived虚拟IP


Nginx实现Tomcat集群流程+keepalived虚拟IP


配置文件含义:

worker_processes  1;#工作进程的个数,一般与计算机的cpu核数一致  
  
events {  
    worker_connections  1024;#单个进程最大连接数(最大连接数=连接数*进程数)  
}  
  
http {  
    include       mime.types; #文件扩展名与文件类型映射表  
    default_type  application/octet-stream;#默认文件类型  
  
    sendfile        on;#开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。  
      
    keepalive_timeout  65; #长连接超时时间,单位是秒  
  
    gzip  on;#启用Gizp压缩  
      
    #服务器的集群  
    upstream  netitcast.com {  #服务器集群名字   
        server    127.0.0.1:18080  weight=1;#服务器配置   weight是权重的意思,权重越大,分配的概率越大。  
        server    127.0.0.1:28080  weight=2;  
    }     
  
    #当前的Nginx的配置  
    server {  
        listen       80;#监听80端口,可以改成其他端口  
        server_name  localhost;##############   当前服务的域名  
  
    location / {  
            proxy_pass http://netitcast.com;  
            proxy_redirect default;  
        }  
          
  
        error_page   500 502 503 504  /50x.html;  
        location = /50x.html {  
            root   html;  
        }  
    }  
}  

启动Nginx

访问如下:

Nginx实现Tomcat集群流程+keepalived虚拟IP

页面不断刷新,显示Tomcat01和Tomcat02的页面如下:

Nginx实现Tomcat集群流程+keepalived虚拟IP


Nginx实现Tomcat集群流程+keepalived虚拟IP

###至此一台电脑使用nginx实现tomcat集群完成.
将nginx和keepalive服务加入开机启动服务
[[email protected] keepalived-1.3.2]# echo “/usr/local/nginx/sbin/nginx” >> /etc/rc.local
[[email protected] keepalived-1.3.2]# echo “/etc/init.d/keepalived start” >> /etc/rc.local


##使用Keepalived实现多台Nginx虚拟IP指向

1.安装包版,待定

2.在线安装keepalived
安装依赖包
yum install -y curl gcc openssl-devel libnl3-devel net-snmp-devel

yum install keepalived

[[email protected] ~]# systemctl start keepalived   //启动keepalived
[[email protected] ~]# systemctl enable keepalived  //加入开机启动keepalived
[[email protected] ~]# systemctl restart keepalived  //重新启动keepalived
[[email protected] ~]# systemctl status keepalived   //查看keepalived状态

########启动后查看keepalived状态

Nginx实现Tomcat集群流程+keepalived虚拟IP

	运行即可 

#####安装成功进行修改配置文件,进行虚拟ip指向

keepalived.conf 配置说明:

! Configuration File for keepalived
## 配置故障发生时的通知对象以及机器标识
global_defs {
   notification_email {
## 故障时,给谁发送通知邮件,可添加多个
#     [email protected]
   }
## 邮件发送方
#   notification_email_from [email protected]
## 通知邮件的smtp地址
#   smtp_server 192.168.200.1
## 连接smtp服务器的超时时间
#   smtp_connect_timeout 30
## 标识本节点的字条串,通常为hostname,但不一定非得是hostname。故障发生时,邮件通知会用到
   router_id LVS_DEVEL
}

## 定义 vrrp 实例 
vrrp_instance VI_1 {
## MASTER,配置为主服务器;BACKUP 为备用服务器   
    state MASTER
## 通讯网卡,与系统网卡名称一致
## 查询网卡名称可使用 `ip a` or `ifconfig` or 'ip addr' 等命令
    interface enp0s3
## 虚拟路由标识,这个标识是一个数字,并且同一个 vrrp 实例使用唯一的标识
    virtual_router_id 51
## 优先级,0--254,权重值 MASTER 一定要高于 BACKUP
    priority 101
## 同步时间间隔,实际部署时可以设置小一点,减少延时
    advert_int 1
## 验证信息
    authentication {
## 验证类型
        auth_type PASS
## 验证密码,用于通讯主机间验证,备用服务器必须与主服务器密码相同
        auth_pass 1111
    }

## 虚拟 IP,主服务器与从服务器设置相同的虚拟 IP,可配置多个
## 注:外部访问时,hosts 指向与本虚拟 IP 一致
    virtual_ipaddress {
    192.168.4.200 dev enp0s3
#        192.168.200.17
#        192.168.200.18
    }

## 虚拟服务定义块
    virtual_server 192.168.4.200 80{
## 健康检查时间间隔,单位 秒
    delay_loop 6
## 负载均衡转发规则,一般包括 DR、NAT 和 TUN 三种
    lb_kind DR
## 会话保持时间,单位 秒
    persistence_timeout 50
## 转发协议,一般有 TCP、UDP 两种
    protocol TCP

## 实际服务器 IP
    real_server 192.168.4.171 80{
## 权重值 数值越大,权重越高
        weight 1
## 检测到真实服务 down 后执行的脚本
        notify_down '/root/nginx_pid.sh'
## http 或 ssl 检查方式
        HTTP_GET|SSL_GET{
            url{
                path '/index.html'
            }
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
## Tcp检查
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
## 脚本检查
        MISC_CHECK {
## 外部程序检查
           misc_path /usr/local/bin/script.sh!
## 脚本执行超时时间                         
           misc_timeout 10                    
        }
    }
}

MASTER的配置如下(直接进行复制)

! Configuration File for keepalived

global_defs {
   router_id LVS_DEVEL
}

vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
    auth_type PASS
    auth_pass 1111
}
virtual_ipaddress {
	#指定的虚拟ip
    192.168.0.250
}
}
virtual_server 192.168.0.250 80 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
#主机:192.168.0.10部署Nginx
real_server 192.168.0.10 80 {
    weight 1
    TCP_CHECK {
        connect_timeout 10
        delay_before_retry 3
        connect_port 80
    }
}
}

BACKUP的配置

! Configuration File for keepalived
global_defs {
   router_id LVS_DEVEL
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
		#指定的虚拟ip
        192.168.0.250
    }
}

virtual_server 192.168.0.250 80 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT
    persistence_timeout 50
    protocol TCP
	#主机:192.168.0.10部署Nginx
    real_server 192.168.0.11 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 10
            delay_before_retry 3
            connect_port 80
        }
    }
}

###keepalived的虚拟IP功能配置完成。

相关文章: