macbook pro下parallel desktop虚拟centos,keepalived+nginx+tomcat实现高可用性
环境准备
MacBook pro
通过Parallels Desktop安装两个centOS 7
拓扑图
PD设置
PD虚拟机中,需要将网络链接模式改成桥接模式,可以通过宿主机macbook pro 链接到对应的逊尼基
![桥接模式下,虚拟机和宿主机IP地址在同网段](https://img-blog.csdnimg.cn/20190604142238921.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装:aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dhb194aWFvZmVuZw==,size_16,color_FFFFFF,t_70)
nginx安装及配置
由于CentOS是最小化安装,因此需要安装各类依赖包。
gcc安装
安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装
#yum install gcc-c++
PCRE pcre-devel 安装
PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。nginx也需要此库。
#yum install -y pcre pcre-devel
zlib 安装
zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库。
#yum install -y zlib zlib-devel
OpenSSL 安装
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。
nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要在 Centos 安装 OpenSSL 库。
#yum install -y openssl openssl-devel
正式开始安装nginx
通过wget方式直接下载安装
#cd /opt
#wget -c https://nginx.org/download/nginx-1.17.0.tar.gz
解压
#tar -zxvf nginx-1.17.0.tar.gz
#cd /nginx-1.17.0
配置,这里加了参数,直接将文件安装到/usr/local/nginx中
#./configure --prefix=/usr/local/nginx
编译及安装
#make
#make install
完成安装后进入到安装目录,启动nginx;对应操作命令如下
#cd /usr/local/nginx/sbin/
#./nginx
#./nginx -s stop
#./nginx -s quit
#./nginx -s reload
完成后通过MacBook pro由于防火墙关系,还是无法访问到对应应用,本地应用测试,因此直接停止了防火墙
关闭防火墙
#systemctl stop firewalld.service
禁止开机启动防火墙
#systemctl disable firewalld.service
访问服务器
tomcat安装及配置
安装JDK
安装JDK
官方下载jdk需要登录,因此无法通过wget直接下载,下载完成后可以通过sftp方式上传到centos中
本次下载jdk是1.8.0_211版本
jdk本地依然安装到/usr/local/java目录
#mkdir -p /usr/local/java
#tar xf jdk1.8.0_211.tar.gz -C /usr/local/java
配置环境变量
#cd /etc/profile.d
#vim java.sh
#export JAVA_HOME=/usr/local/java/jdk1.8.0_211
#export CLASS_PATH="$JAVA_HOME/lib:$JAVA_HOME/jre/lib"
#export PATH=$PATH:$JAVA_HOME/bin
配置生效
#source /etc/profile
验证配置
可以看到的话对应sun的java版本信息
#java -version
删除openjdk
如果输入java -version看到的不是sun的jdk,而是openjdk,那应该是完整安装版centos自带openjdk,可以将其删除
#rpm -qa | grep java
查看对应的列出的openjdk,删除所有,.noarch不用删除,命令类似如下
#rpm -e --nodeps java-1.7.0-openjdk-1.7.0.111-2.6.7.2.el7_2.x86_64
安装tomcat
安装tomcat
直接通过镜像网站wget下载安装,解压到/usr/local/目录
#cd /opt
#wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-9/v9.0.20/bin/apache-tomcat-9.0.20.tar.gz
#tar xf apache-tomcat-9.0.20.tar.gz -C /usr/local/
进入到安装目录,直接启动或停止tomcat
#cd /usr/local/apache-tomcat-9.0.20/bin
#./startup.sh
#./shutdown.sh
可以访问到tomcat控制台,为了方便区分,直接在控制台对应的页面上增加了tomcat端口信息
配置tomcat
进入到server.xml页面,可以修改tomcat对应端口
#vi /usr/local/apache-tomcat-9.0.20/conf/server.xml
可以修改tomcat默认端口
nginx配置tomcat负载
增加一个tomcat
由于需要通过nginx做负载,因此需要多个tomcat,直接通过原来的tomcat复制了一个tomcat2
cp -a /usr/local/apache-tomcat-9.0.20 /usr/local/tomcat2
修改tomcat端口
进入配置文件目录,修改server.xml,将端口修改成8088
#cd /usr/local/tomcat2/conf/
#vi server.xml
启动tomcat
#cd /usr/local/tomcat2/bin/
#./startup.sh
nginx配置
进入nginx配置文件目录,修改配置文件
#cd /usr/local/nginx/conf/
#vi nginx.conf
配置文件中修改
upstream tomcat{
server 127.0.0.1:8080 weight=1;
server 127.0.0.1:8088 weight=1;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
# root html;
# index index.html index.htm;
proxy_pass http://tomcat;
proxy_redirect default;
proxy_set_header HOST $host;
proxy_set_header X-Real-IP $remote_addr;#带终端IP信息
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
重启nginx
#cd /usr/local/nginx/sbin/
#./nginx -s stop
#./nginx
验证
直接输入nginx地址对应端口,可以看到已经关联到tomcat
刷新后,可以看到关联到8088端口
keepalived安装及配置
keepalived最开始使用了yum方式安装,最后安装启动都成功,但是没有绑定虚拟IP,查了很多方法,调整了好几次配置,依然没有出现虚拟IP,直接remove后,通过wget下载后安装,一次成功,没有找到原来为甚不成功的原因。
keepalived 使用1.4.5
下载安装包并解压
#cd /opt
#wget http://www.keepalived.org/software/keepalived-1.4.5.tar.gz
#tar -zxvf /opt/keepalived-1.4.5.tar.gz
安装依赖包
#yum -y install kernel-devel openssl-devel libnl-devel libnfnetlink-devel
编译并安装
#cd /opt/keepalived-1.4.5
#./configure
#make
#make install
创建配置文件
源码安装默认配置文件路径为: /etc/keepalived/keepalived.conf ,不创建这个文件,无法成功启动
#mkdir -p /etc/keepalived
#vim /etc/keepalived/keepalived.conf
配置文件内容
! Configuration File for keepalived
global_defs {
router_id test-100 #每个keepalived取个不同名称,主备需要一致
}
vrrp_instance VI_1 {
state MASTER # MASTER为主,BACKUP 为备
interface eth0 # 网卡名称
virtual_router_id 60 # 主备这里要配置为同样的
priority 100 # 优先级,主要高于备. 一般主配置为100 备配置为80
advert_int 1
nopreempt # 主动抢占,主备都开启的话,服务器抢占过去后,要等这个服务器keepalived停掉才会漂移到另一台
authentication {
auth_type PASS # 主备必须配置成同样的
auth_pass 1111 # 主备必须配置成同样的
}
virtual_ipaddress {
192.168.1.100 # vip,主备必须配置一样
}
}
防火墙在配置nginx时已关闭,因此不需要开放防火墙的vrrp
设置开机自启动
#systemctl enable keepalived
keepalived操作命令
#service keepalived start
#service keepalived stop
#service keepalived restart
#service keepalived status
验证
keepalived全部启动情况下,主应用生效
停掉主应用keepalived,备应用生效
刷新后,备应用的nginx下,8088端口tomcat生效