linux使用nginx+keepalived实现高可用,附带安装linux安装tomcat,jdk和nginx负载

准备工作

一、linux上安装nginx

1.安装依赖

 yum install gcc-c++

在这里插入图片描述

连接成功
Last login: Tue May 18 09:54:43 2021
[root@localhost ~]# gcc-c++
bash: gcc-c++: 未找到命令...
[root@localhost ~]# yum install gcc-c++
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.bfsu.edu.cn
正在解决依赖关系
--> 正在检查事务
---> 软件包 gcc-c++.x86_64.0.4.8.5-44.el7 将被 安装
--> 正在处理依赖关系 libstdc++-devel = 4.8.5-44.el7,它被软件包 gcc-c++-4.8.5-44.el7.x86_64 需要
--> 正在处理依赖关系 libstdc++ = 4.8.5-44.el7,它被软件包 gcc-c++-4.8.5-44.el7.x86_64 需要
--> 正在处理依赖关系 gcc = 4.8.5-44.el7,它被软件包 gcc-c++-4.8.5-44.el7.x86_64 需要
--> 正在处理依赖关系 libmpc.so.3()(64bit),它被软件包 gcc-c++-4.8.5-44.el7.x86_64 需要
--> 正在检查事务
---> 软件包 gcc.x86_64.0.4.8.5-44.el7 将被 安装
--> 正在处理依赖关系 libgomp = 4.8.5-44.el7,它被软件包 gcc-4.8.5-44.el7.x86_64 需要
--> 正在处理依赖关系 cpp = 4.8.5-44.el7,它被软件包 gcc-4.8.5-44.el7.x86_64 需要
--> 正在处理依赖关系 libgcc >= 4.8.5-44.el7,它被软件包 gcc-4.8.5-44.el7.x86_64 需要
--> 正在处理依赖关系 glibc-devel >= 2.2.90-12,它被软件包 gcc-4.8.5-44.el7.x86_64 需要
---> 软件包 libmpc.x86_64.0.1.0.1-3.el7 将被 安装
---> 软件包 libstdc++.x86_64.0.4.8.5-16.el7 将被 升级
---> 软件包 libstdc++.x86_64.0.4.8.5-44.el7 将被 更新
---> 软件包 libstdc++-devel.x86_64.0.4.8.5-44.el7 将被 安装
--> 正在检查事务
---> 软件包 cpp.x86_64.0.4.8.5-44.el7 将被 安装
---> 软件包 glibc-devel.x86_64.0.2.17-324.el7_9 将被 安装
--> 正在处理依赖关系 glibc-headers = 2.17-324.el7_9,它被软件包 glibc-devel-2.17-324.el7_9.x86_64 需要
--> 正在处理依赖关系 glibc = 2.17-324.el7_9,它被软件包 glibc-devel-2.17-324.el7_9.x86_64 需要
--> 正在处理依赖关系 glibc-headers,它被软件包 glibc-devel-2.17-324.el7_9.x86_64 需要
---> 软件包 libgcc.x86_64.0.4.8.5-16.el7 将被 升级
---> 软件包 libgcc.x86_64.0.4.8.5-44.el7 将被 更新
---> 软件包 libgomp.x86_64.0.4.8.5-16.el7 将被 升级
---> 软件包 libgomp.x86_64.0.4.8.5-44.el7 将被 更新
--> 正在检查事务
---> 软件包 glibc.x86_64.0.2.17-196.el7 将被 升级
--> 正在处理依赖关系 glibc = 2.17-196.el7,它被软件包 glibc-common-2.17-196.el7.x86_64 需要
---> 软件包 glibc.x86_64.0.2.17-324.el7_9 将被 更新
---> 软件包 glibc-headers.x86_64.0.2.17-324.el7_9 将被 安装
--> 正在处理依赖关系 kernel-headers >= 2.2.1,它被软件包 glibc-headers-2.17-324.el7_9.x86_64 需要
--> 正在处理依赖关系 kernel-headers,它被软件包 glibc-headers-2.17-324.el7_9.x86_64 需要
--> 正在检查事务
---> 软件包 glibc-common.x86_64.0.2.17-196.el7 将被 升级
---> 软件包 glibc-common.x86_64.0.2.17-324.el7_9 将被 更新
---> 软件包 kernel-headers.x86_64.0.3.10.0-1160.25.1.el7 将被 安装
--> 解决依赖关系完成

依赖关系解决

====================================================================================================================================================================================
 Package                                       架构                                 版本                                                源                                     大小
====================================================================================================================================================================================
正在安装:
 gcc-c++                                       x86_64                               4.8.5-44.el7                                        base                                  7.2 M
为依赖而安装:
 cpp                                           x86_64                               4.8.5-44.el7                                        base                                  5.9 M
 gcc                                           x86_64                               4.8.5-44.el7                                        base                                   16 M
 glibc-devel                                   x86_64                               2.17-324.el7_9                                      updates                               1.1 M
 glibc-headers                                 x86_64                               2.17-324.el7_9                                      updates                               691 k
 kernel-headers                                x86_64                               3.10.0-1160.25.1.el7                                updates                               9.0 M
 libmpc                                        x86_64                               1.0.1-3.el7                                         base                                   51 k
 libstdc++-devel                               x86_64                               4.8.5-44.el7                                        base                                  1.5 M
为依赖而更新:
 glibc                                         x86_64                               2.17-324.el7_9                                      updates                               3.6 M
 glibc-common                                  x86_64                               2.17-324.el7_9                                      updates                                12 M
 libgcc                                        x86_64                               4.8.5-44.el7                                        base                                  103 k
 libgomp                                       x86_64                               4.8.5-44.el7                                        base                                  159 k
 libstdc++                                     x86_64                               4.8.5-44.el7                                        base                                  306 k

事务概要
====================================================================================================================================================================================
安装  1 软件包 (+7 依赖软件包)
升级           ( 5 依赖软件包)

总计:57 M
总下载量:42 M
Is this ok [y/d/N]: y
Downloading packages:
警告:/var/cache/yum/x86_64/7/base/packages/cpp-4.8.5-44.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY                       ] 5.3 MB/s | 8.7 MB  00:00:06 ETA 
cpp-4.8.5-44.el7.x86_64.rpm 的公钥尚未安装
(1/7): cpp-4.8.5-44.el7.x86_64.rpm                                                                                                                           | 5.9 MB  00:00:01     
glibc-headers-2.17-324.el7_9.x86_64.rpm 的公钥尚未安装                      29% [===================                                              ] 5.6 MB/s |  12 MB  00:00:05 ETA 
(2/7): glibc-headers-2.17-324.el7_9.x86_64.rpm                                                                                                               | 691 kB  00:00:00     
(3/7): glibc-devel-2.17-324.el7_9.x86_64.rpm                                                                                                                 | 1.1 MB  00:00:00     
(4/7): gcc-c++-4.8.5-44.el7.x86_64.rpm                                                                                                                       | 7.2 MB  00:00:01     
(5/7): libstdc++-devel-4.8.5-44.el7.x86_64.rpm                                                                                                               | 1.5 MB  00:00:00     
(6/7): kernel-headers-3.10.0-1160.25.1.el7.x86_64.rpm                                                                                                        | 9.0 MB  00:00:01     
(7/7): gcc-4.8.5-44.el7.x86_64.rpm                                                                                                                           |  16 MB  00:00:06     
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
总计                                                                                                                                                6.6 MB/s |  42 MB  00:00:06     
从 file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 检索密钥
导入 GPG key 0xF4A80EB5:
 用户ID     : "CentOS-7 Key (CentOS 7 Official Signing Key) <[email protected]>"
 指纹       : 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
 软件包     : centos-release-7-4.1708.el7.centos.x86_64 (@anaconda)
 来自       : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
是否继续?[y/N]:y
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在更新    : libgcc-4.8.5-44.el7.x86_64                                                                                                                                     1/18 
  正在更新    : glibc-2.17-324.el7_9.x86_64                                                                                                                                    2/18 
warning: /etc/nsswitch.conf created as /etc/nsswitch.conf.rpmnew
  正在更新    : glibc-common-2.17-324.el7_9.x86_64                                                                                                                             3/18 
  正在安装    : libmpc-1.0.1-3.el7.x86_64                                                                                                                                      4/18 
  正在更新    : libstdc++-4.8.5-44.el7.x86_64                                                                                                                                  5/18 
  正在安装    : libstdc++-devel-4.8.5-44.el7.x86_64                                                                                                                            6/18 
  正在安装    : cpp-4.8.5-44.el7.x86_64                                                                                                                                        7/18 
  正在更新    : libgomp-4.8.5-44.el7.x86_64                                                                                                                                    8/18 
  正在安装    : kernel-headers-3.10.0-1160.25.1.el7.x86_64                                                                                                                     9/18 
  正在安装    : glibc-headers-2.17-324.el7_9.x86_64                                                                                                                           10/18 
  正在安装    : glibc-devel-2.17-324.el7_9.x86_64                                                                                                                             11/18 
  正在安装    : gcc-4.8.5-44.el7.x86_64                                                                                                                                       12/18 
  正在安装    : gcc-c++-4.8.5-44.el7.x86_64                                                                                                                                   13/18 
  清理        : libstdc++-4.8.5-16.el7.x86_64                                                                                                                                 14/18 
  清理        : libgomp-4.8.5-16.el7.x86_64                                                                                                                                   15/18 
  清理        : glibc-common-2.17-196.el7.x86_64                                                                                                                              16/18 
  清理        : glibc-2.17-196.el7.x86_64                                                                                                                                     17/18 
  清理        : libgcc-4.8.5-16.el7.x86_64                                                                                                                                    18/18 
  验证中      : gcc-c++-4.8.5-44.el7.x86_64                                                                                                                                    1/18 
  验证中      : libstdc++-4.8.5-44.el7.x86_64                                                                                                                                  2/18 
  验证中      : glibc-common-2.17-324.el7_9.x86_64                                                                                                                             3/18 
  验证中      : glibc-2.17-324.el7_9.x86_64                                                                                                                                    4/18 
  验证中      : cpp-4.8.5-44.el7.x86_64                                                                                                                                        5/18 
  验证中      : glibc-devel-2.17-324.el7_9.x86_64                                                                                                                              6/18 
  验证中      : gcc-4.8.5-44.el7.x86_64                                                                                                                                        7/18 
  验证中      : libstdc++-devel-4.8.5-44.el7.x86_64                                                                                                                            8/18 
  验证中      : libmpc-1.0.1-3.el7.x86_64                                                                                                                                      9/18 
  验证中      : glibc-headers-2.17-324.el7_9.x86_64                                                                                                                           10/18 
  验证中      : libgcc-4.8.5-44.el7.x86_64                                                                                                                                    11/18 
  验证中      : libgomp-4.8.5-44.el7.x86_64                                                                                                                                   12/18 
  验证中      : kernel-headers-3.10.0-1160.25.1.el7.x86_64                                                                                                                    13/18 
  验证中      : libgcc-4.8.5-16.el7.x86_64                                                                                                                                    14/18 
  验证中      : glibc-2.17-196.el7.x86_64                                                                                                                                     15/18 
  验证中      : libstdc++-4.8.5-16.el7.x86_64                                                                                                                                 16/18 
  验证中      : glibc-common-2.17-196.el7.x86_64                                                                                                                              17/18 
  验证中      : libgomp-4.8.5-16.el7.x86_64                                                                                                                                   18/18 

已安装:
  gcc-c++.x86_64 0:4.8.5-44.el7                                                                                                                                                     

作为依赖被安装:
  cpp.x86_64 0:4.8.5-44.el7                           gcc.x86_64 0:4.8.5-44.el7          glibc-devel.x86_64 0:2.17-324.el7_9          glibc-headers.x86_64 0:2.17-324.el7_9       
  kernel-headers.x86_64 0:3.10.0-1160.25.1.el7        libmpc.x86_64 0:1.0.1-3.el7        libstdc++-devel.x86_64 0:4.8.5-44.el7       

作为依赖被升级:
  glibc.x86_64 0:2.17-324.el7_9     glibc-common.x86_64 0:2.17-324.el7_9     libgcc.x86_64 0:4.8.5-44.el7     libgomp.x86_64 0:4.8.5-44.el7     libstdc++.x86_64 0:4.8.5-44.el7    

完毕!
[root@localhost ~]# 

遇到需要确认的输入y就好

2.选定源码目录

可以是任何目录,本文选定的是/usr/local/src

	cd /usr/local/src

在这里插入图片描述

3.安装PCRE库

依次执行以下指令

cd /usr/local/src
wget https://ftp.pcre.org/pub/pcre/pcre-8.44.tar.gz 
tar -zxvf pcre-8.44.tar.gz
cd pcre-8.44
./configure
make
make install

4.安装zlib库

cd /usr/local/src
 
wget http://zlib.net/zlib-1.2.11.tar.gz
tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure
make
make install

5.安装ssl

cd /usr/local/src
wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz
tar -zxvf openssl-1.1.1g.tar.gz

6.安装nginx

cd /usr/local/src
wget http://nginx.org/download/nginx-1.18.0.tar.gz
tar -zxvf nginx-1.18.0.tar.gz
cd nginx-1.18.0

./configure --sbin-path=/usr/local/nginx/nginx \
--conf-path=/usr/local/nginx/nginx.conf \
--pid-path=/usr/local/nginx/nginx.pid \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--with-file-aio \
--with-http_realip_module \
--with-http_ssl_module \
--with-pcre=/usr/local/src/pcre-8.44 \
--with-zlib=/usr/local/src/zlib-1.2.11 \
--with-openssl=/usr/local/src/openssl-1.1.1g

make -j2
make install

–with-pcre=/usr/local/src/pcre-8.44 指的是pcre-8.44 的源码路径。
–with-zlib=/usr/local/src/zlib-1.2.11指的是zlib-1.2.11 的源码路径。

7.启动

确保系统的 80 端口没被其他程序占用,运行/usr/local/nginx/nginx 命令来启动 Nginx

netstat -ano|grep 80
sudo /usr/local/nginx/nginx

打开浏览器访问此机器的 IP,如果浏览器出现 Welcome to nginx! 则表示 Nginx 已经安装并运行成功。
在这里插入图片描述

8.问题排查-开放防火墙

  ps -ef|grep nginx

查看nginx是否启动,如已启动,在本机上可以访问,在其他电脑不能访问.修改防火墙

扫描二维码关注公众号,回复: 13259123 查看本文章

1、开启防火墙
systemctl start firewalld

2、开放指定端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
命令含义:
–zone #作用域
–add-port=80/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效

3、重启防火墙
firewall-cmd --reload

4、查看端口号
netstat -ntlp //查看当前所有tcp端口
在这里插入图片描述

netstat -ntulp |grep 80//查看所有80端口使用情况

在这里插入图片描述
再次访问
在这里插入图片描述
成功

二、安装JDK

1.移除系统原有的JDK

输入 java -version 查看是否存在
在这里插入图片描述
发现有输入:rpm -qa | grep java 检测jdk的安装包
在这里插入图片描述
接着进行一个个删除包,输入:rpm -e --nodeps +包名
最后再次:rpm -qa | grep java检查是否删除完即可
在这里插入图片描述
创建文件夹
在这里插入图片描述

2.下载JDK

官网下载

百度云连接
链接:https://pan.baidu.com/s/1UnBf5UCqyBNfd3NWF-ay_A
提取码:ktps

在这里插入图片描述

登录Oracle账号后自动下载
命令 tar -zxvf jdk-8u221-linux-x64.tar.gz 解压
在这里插入图片描述

用 vim /etc/profile 命令 配置环境变量,按下 键盘上的 i 进入编辑模式
或者像我这样使用shell编辑
在这里插入图片描述
在配置文件之后添加环境变量

JAVA_HOME=/usr/local/java/jdk1.8.0_291
export JRE_HOME=/usr/local/java/jdk1.8.0_291/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH

3.测试

输入javac 不会出现不可执行指令

再输入java -version
在这里插入图片描述
安装jdk完成

三、安装tomcat

官网下载

https://tomcat.apache.org/download-80.cgi
在这里插入图片描述
百度云
链接:https://pan.baidu.com/s/1Ukd3Y-SF6ZQyrC6AuKxHYg
提取码:0jg9

1.在 /usr/local/ 下新建 tomcat文件夹

cd /usr/local/
mkdir tomcat

2.上传tomcat并复制

在这里插入图片描述
复制三份,修改配置文件
在这里插入图片描述
修改端口避免冲突
在这里插入图片描述
在这里插入图片描述

3.修改nginx配置文件,配置反向代理

upstream clustertomcat{
    
    
	   		server 192.168.137.133:8081 weight=5;
	   		server 192.168.137.133:8082 weight=1;
	   		server 192.168.137.133:8083 weight=2;
	   }
server {
    
    
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
    
    
 		proxy_pass http://clustertomcat;
        }
        
        #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;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
    
    
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
    
    
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
    
    
        #    deny  all;
        #}
    }

添加这两块
在这里插入图片描述
在这里插入图片描述

3.1测试

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可用, 进入下一步

四、使用keepalived实现nginx的高可用

在这里插入图片描述

安装keepalived

官网

百度云 1.2.18
链接:https://pan.baidu.com/s/1384O3bWLrZUkD0zYqSOU6A
提取码:0und

新建server文件夹

mkdir /use/local/server
cd /use/local/server

上传到/use/local/server
解压

tar -zxvf keepalived-1.2.18.tar.gz 

在这里插入图片描述

开始安装

 cd keepalived-1.2.18
 ./configure --prefix=/usr/local/server/keepalived
 make && make install

添加开机自启动

 cp /usr/local/server/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
 cp /usr/local/server/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
 cp /usr/local/server/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
 ln -s /usr/local/sbin/keeplived /usr/sbin/
 ln -s /usr/local/server/keepalived/sbin/keepalived /sbin/
 chkconfig keepalived on

配置keepalived

这里有两台电脑

编号 IP
主机一 192.168.137.132
主机二 192.168.137.134

配置主节点

修改hosts文件

vi /etc/hosts

在这里插入图片描述
查看本机网卡

ifconfig

在这里插入图片描述

 cd /usr/local/server/keepalived/etc/keepalived/
ls

在这里插入图片描述
在这里插入图片描述
修改keepalived.conf配置文件

#主节点的配置文件
global_defs {
    
    
    router_id keep134;  #全局变量和主机名保持一致
}
 
vrrp_script chk_nginx {
    
    
    script "/etc/keepalived/nginx_check.sh" #执行脚本的位子
    interval 2 # 查询间隔时间2S
    weight -20 # 权重-20
}
 
vrrp_instance VI_1 {
    
    
    state MASTER #表示主节点
    interface ens33 #和本机网卡保持一致
    virtual_router_id 134 #最好和IP尾数保持一致
    mcast_src_ip 192.168.137.134 $本机IP
    priority 100 #初始分值
    nopreempt #表示重启后仍然充当主节点
    advert_int 1
    authentication {
    
     # 验证
        auth_type PASS #密码验证
        auth_pass 1111
    }
    track_script {
    
    
       chk_nginx #执行脚本 
    }
    virtual_ipaddress {
    
    
        192.168.137.130 # 虚拟IP,可换行表示多个
    }
}

修改从节点,只有配置文件有一点不一样,修改hosts,查看网卡都一样,不再贴出

#从节点的配置文件
global_defs {
    
    
    router_id keep132;  
}
 
vrrp_script chk_nginx {
    
    
    script "/etc/keepalived/nginx_check.sh"
    interval 2
    weight -20
}
 
vrrp_instance VI_1 {
    
    
    state BACKUP   # 表示从节点
    interface ens33
    virtual_router_id 132
    priority 90 
    mcast_src_ip 192.168.137.132 #本机IP
    advert_int 1
    authentication {
    
    
        auth_type PASS
        auth_pass 1111
    }
    track_script {
    
    
       chk_nginx
    }
    virtual_ipaddress {
    
    
        192.168.137.130
    }
}

配置执行脚本

vi /etc/keepalived/nginx_check.sh
#!/bin/bash
#时间变量,用于记录日志
d=`date --date today +%Y%m%d_%H:%M:%S`
#计算nginx进程数量
n=`ps -C nginx --no-header |wc -l`
#如果进程为0,则启动nginx,并且再次检测nginx进程数量,
#如果还为0,说明nginx无法启动,此时需要关闭keepalived
if [ $n -eq 0 ]; then
        /usr/local/nginx/nginx
        sleep 2
        if [ `ps -C nginx --no-header |wc -l` -eq 0  ]; then
                killall keepalived
        fi
fi

再把keepalived的配置文件复制到/etc/keepalived 下

cp /usr/local/server/keepalived/etc/keepalived/keepalived.conf /etc/keepalived

五、测试

开始测试前,为了区分,修改nginx的index.html页面

cd /usr/local/nginx/html/

在这里插入图片描述
在welcome 这里加上本机IP,方便区分
在这里插入图片描述

浏览器访问虚拟ip跳转主节点
在这里插入图片描述
关闭主节点的nginx,再次访问
在这里插入图片描述

启动主节点的nginx

cd /usr/local/nginx/
./nginx

在这里插入图片描述
脚本中有执行killall keepalived,这里还要启动keepalived

[root@localhost nginx]# cd /usr/local/server/keepalived/sbin/
[root@localhost sbin]# ls
keepalived
[root@localhost sbin]# keepalived 

在这里插入图片描述

再次访问虚拟ip 192.168.137.130
在这里插入图片描述
已自动切换为134

猜你喜欢

转载自blog.csdn.net/weixin_45352783/article/details/116978899