共计 6055 个字符,预计需要花费 16 分钟才能阅读完成。
- 使用开源 Web 应用 solo blog 进行项目演示。前端使用 Nginx 作为负载均衡器,后端 Tomcat 连接 Redis 实现 session 存储。Redis 的特点就是可以将 session 持久化。样才能真正实现后台多个 Tomcat 负载平衡,用户请求能够发往任何一个 tomcat 主机。
- keeplived、zabbix 与 ansible 暂不在本文章的范围当中, 会在之后的文章逐一进行讲解
实验架构图
- 部署环境
CentOS7
Nginx1.10.2
Tomcat7.0
Redis3.2.3
Mariadb 5.5.44 - 所需软件包
commons-pool2-2.2.jar
jedis-2.5.2.jar
tomcat-redis-session-manager-2.0.0.jar
下载地址 https://github.com/izerui/tomcat-redis-session-managercommons-pool2-2.2.jar
solo blog
下载地址 http://b3log.org/
一、Nginx 服务器配置
-
安装前准备
ntpdate 172.18.0.1 iptables -F
-
安装 Nginx
yum install nginx
-
修改配置文件
upstream tomcatservers:创建后端服务器组,要在 http 内部追加
location:匹配 URL,在 server 内部追加
注:省略号为其他默认的参数,如果没有特殊需要按默认即可vim /etc/nginx/nginx.conf http { ... upstream tomcatservers {server 172.18.68.21:8080; server 172.18.68.22:8080; } ... server { ... location / {proxy_pass http://tomcatservers; } ... } } systemctl start nginx
-
检查端口
启动服务器要检查 80 端口是否正常监听ss -ntl
二、Tomcat 服务器配置
两台 Tomcat 服务器的配置完全一样。以下步骤在两台主机重复操作即可
-
安装前准备
ntpdate 172.18.0.1 iptables -F
-
安装 Tomcat
yum install Tomcat
-
部署 solo
.war 包复制到 webapps 目录下后重启 tomcat,tomcat 会自动解压其文件cp solo-2.4.1.war /usr/share/tomcat/webapps/ systemctl restart tomcat
-
配置 solo
serverhost 为前端负载均衡的域名或者 IP,如果部署完毕后出现静态资源无法加载的情况,多数是这里出了问题。cd /usr/share/tomcat/webapps/solo-2.4/WEB-INF/classes vim latke.properties #### Server #### # 配置协议 serverScheme=http # 配置客户端访问站点时的域名或 IP,也就是前端 Nginx 的域名 serverHost=www.shuaiguoxia.com # 使用的端口 serverPort=80
-
配置 solo 连接 MySQL
H2 runtime 的部分是 solo 默认使用的,把他手动注释掉后把 MySQL runtime 部分注释取消。
设定 MySQL 的用户名密码,然后把 172.18.68.41 改为 MySQL(主)的 IP 地址。#### H2 runtime #### #runtimeDatabase=H2 #jdbc.username=root #jdbc.password= #jdbc.driver=org.h2.Driver #jdbc.URL=jdbc:h2:~/solo_h2/db #jdbc.pool=h2 # #### MySQL runtime #### runtimeDatabase=MYSQL jdbc.username=root # 用户名 jdbc.password=123456 # 密码 jdbc.driver=com.mysql.jdbc.Driver jdbc.URL=jdbc:mysql://172.18.68.41:3306/solo?useUnicode=yes&characterEncoding=utf8 jdbc.pool=druid
-
配置 Tomcat 连接 Reids
Tomcat 连接 Reids 需要 3 个软件包:
commons-pool2-2.2.jar
jedis-2.5.2.jar
tomcat-redis-session-manager-2.0.0.jar
下载地址 https://github.com/izerui/tomcat-redis-session-manager -
将所需要的 jar 包复制到 /usr/share/tomcat/lib/
cp commons-pool2-2.2.jar /usr/share/tomcat/lib/ cp jedis-2.5.2.jar cp tomcat-redis-session-manager-2.0.0.jar
-
修改 contest.xml 文件, 再文件中加入以下两行。
IP 为 RedisIP 地址,端口为 Redis 监听的端口vim /etc/tomcat/context.xml # <Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" /> <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager" host="172.18.68.31" port="6379" database="0" maxInactiveInterval="60" />
-
重启 Tomcat
systemctl restart tomcat
三、Redis 服务器配置
Redis 服务器一共两台,一主一从。仅仅配置文件不同,其他过程全部相同。
-
安装前准备
ntpdate 172.18.0.1 iptables -F
-
安装 Redis
yum install Redis
-
Redis 主节点的配置
主节点仅配置 IP、监听的端口、与连接密码vim /etc/redis.conf bind 0.0.0.0 # 监听所有 IP port 6379 # 设定监听的端口 requirepass 123456 # 设定连接的密码
-
Redis 从节点配置
从节点设置为只读bind 0.0.0.0 # 监听所有 IP slaveof 172.18.68.31 6379 # 设定主节点的 IP+ 端口 masterauth 123456 # 主节点的连接密码 slave-read-only yes # 从节点为只读
-
确认主从配置成功
shell > redis-cli -h 172.18.68.32 # 连接从服务器redis 127.0.0.1:6379> INFO replication # 查看主从复制状态信息 # Replication role:slave master_host:172.18.68.31 # 主节点IP master_port:6379 # 主节点的端口 master_link_status:up # up为主从同步正常 master_last_io_seconds_ago:9 master_sync_in_progress:0 slave_repl_offset:1420 slave_priority:100 slave_read_only:1 connected_slaves:0 master_repl_offset:0 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0
四、MySQL 服务器配置
MySQL 服务器一共两台,一主一从。仅仅配置文件不同,其他过程全部相同。
-
安装前准备
ntpdate 172.18.0.1 iptables -F
-
安装 Mariadb
yum install Mariadb # # # 运行初始化脚本对 MySQL 进行 cd /usr/local/mysql/bin mysql_secure_installation #MySql 初始化脚本,以下为每一项的翻译 先回车 是否设置 root 密码 输入密码 确认密码 是否设置匿名用户 是否允许 root 远程登录 删除 test 数据库 现在是否生效
-
MySQL 主服务器的配置
主从同步就必须要开启二进制日志,修改配置文件一共有两点。
1.server-id 必须不能冲突
2. 在主服务器创建授权用户,让用户有复制权限。shell > vim /etc/my.cnf server-id=1 # 节点 ID log-bin=mysql-bin # 指定二进制日志前缀 relay-log=mysql-relay-bin # 指定 relaylog 日志前缀 replicate-wild-ignore-table=mysql.% # 排除要复制的表 replicate-wild-ignore-table=test.% replicate-wild-ignore-table=information_schema.%
在主服务器行创建授权用户,让从服务器有权限复制主服务器数据。授权用户应该匹配最小权限法则,允许连接的 IP 地址越精确越好。
Musql > grant replication slave on *.* to 'slave_user'@'10.0.0.67' identified by '123456';
-
MySQL 从服务器的配置
MySQL 的主从配置也仅仅是 server-id 不同shell > vim /etc/my.cnf server-id=2 # 节点 ID log-bin=mysql-bin # 指定二进制日志前缀 relay-log=mysql-relay-bin # 指定 relaylog 日志前缀 replicate-wild-ignore-table=mysql.% # 排除要复制的表 replicate-wild-ignore-table=test.% replicate-wild-ignore-table=information_schema.%
在从服务器连 mysql 命令行配置, 配置主节点的 IP、用户名密码。最重要的是 master_log_file、master_log_pos,这两项是在主节点上查询后的结果,要与主节点查询结果相同。
# 在 MySQL 主服务器中查询结果 MariaDB [(none)]> show master status\G; *************************** 1. row *************************** File: master-log.000003 Position: 18893845 Binlog_Do_DB: Binlog_Ignore_DB:
配置 MySQL 从服务器
MySQL > change master to master_host='10.0.0.66', master_user='slave_user', master_password='123456', master_log_file='mysql-bin.000001', master_log_pos=106;`
-
查看主动同步情况
在从服务器中查看主从同步情况。最后两行的 yes 标志着主从同步成功。还可以通过查询表、库甚至数据的方式查询验证主从同步情况。MariaDB [(none)]> show slave status\G; *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 172.18.68.41 Master_User: slave-user Master_Port: 3306 Connect_Retry: 60 Master_Log_File: master-log.000002 Read_Master_Log_Pos: 245 Relay_Log_File: mysql-relay-bin.000002 Relay_Log_Pos: 530 Relay_Master_Log_File: master-log.000002 Slave_IO_Running: Yes Slave_SQL_Running: Yes
部署完毕
通过浏览器访问 172.18.68.11/solo-2.4 就能访问部署的 solo 博客,初次进入会让你注册一个用户密码,就是管理员账号密码。
至此不管 Nginx 怎样调度,Tomcat 都能将客户端的 session 保存在 Redis 中。可以通过 windwos 的 Redis 管理软件查看到在 Redis 主从两个数据库都有了 session 信息。
更多 Tomcat 相关教程见以下内容:
CentOS 6.6 下安装配置 Tomcat 环境 http://www.linuxidc.com/Linux/2015-08/122234.htm
RedHat Linux 5.5 安装 JDK+Tomcat 并部署 Java 项目 http://www.linuxidc.com/Linux/2015-02/113528.htm
Tomcat 权威指南(第二版)(中英高清 PDF 版 + 带书签) http://www.linuxidc.com/Linux/2015-02/113062.htm
Tomcat 安全配置与性能优化 http://www.linuxidc.com/Linux/2015-02/113060.htm
Linux 下使用 Xshell 查看 Tomcat 实时日志中文乱码解决方案 http://www.linuxidc.com/Linux/2015-01/112395.htm
CentOS 64-bit 下安装 JDK 和 Tomcat 并设置 Tomcat 开机启动操作步骤 http://www.linuxidc.com/Linux/2015-01/111485.htm
Ubuntu 16.04 下安装 Tomcat 8.5.9 http://www.linuxidc.com/Linux/2017-06/144809.htm
Ubuntu 16.04 安装 Tomcat 8 图解 http://www.linuxidc.com/Linux/2017-10/147773.htm
Tomcat 配置文件 server.xml 详解 http://www.linuxidc.com/Linux/2017-10/148003.htm
Tomcat 单机多实例部署 - 多项目部署 http://www.linuxidc.com/Linux/2017-10/147259.htm
Tomcat 的详细介绍:请点这里
Tomcat 的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-11/148867.htm