>  기사  >  데이터 베이스  >  Nginx+Tomcat+Redis를 통해 영구 세션을 구현하는 방법

Nginx+Tomcat+Redis를 통해 영구 세션을 구현하는 방법

WBOY
WBOY앞으로
2023-05-28 08:37:05883검색

배포 환경

centos7
nginx1.10.2
tomcat7.0
redis3.2.3
mariadb 5.5.44

필수 패키지

commons-pool2-2.2 .jar
jedis-2.5. jar
tomcat-redis-session-manager-2.0.0.jar

솔로 블로그

Nginx+Tomcat+Redis를 통해 영구 세션을 구현하는 방법

1. nginx 서버 구성

설치 전 준비

ntpdate 172.18.0.1
iptables -f

Install nginx

yum install nginx

구성 파일 수정

upstream tomcatservers: 백엔드 서버 그룹을 만들고 http
안에 추가합니다. 위치: URL과 일치하고 서버 안에 추가합니다
참고: 생략 부호는 다른 기본 매개 변수입니다. 특별한 필요가 없으면 기본값을 누르십시오.

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

2. Tomcat 서버 구성

두 Tomcat 서버의 구성은 완전히 동일합니다. 두 호스트 모두에서 다음 단계를 반복하세요

설치 전 준비

ntpdate 172.18.0.1
iptables -f

Tomcat 설치

yum install tomcat

Deploy
전쟁을 복사하세요. 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 런타임 부분은 기본적으로 solo에서 사용됩니다. 수동으로 주석 처리한 후 mysql 런타임 부분의 주석 처리를 제거하세요.


mysql의 사용자 이름과 비밀번호를 설정한 후 172.18.68.41을 mysql(main)의 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 연결 리드 구성

tomcat 연결 리드에는 3개의 소프트웨어 패키지가 필요합니다.

commons-pool2-2.2.jar
jedis-2.5.2.jar
tomcat-redis-session-manager-2.0.0.jar

다운로드 주소

필요한 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

콘테스트 .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" />

Restart tomcat

systemctl restart tomcat


3 Redis 서버 구성


두 개가 있습니다. 하나의 주인과 하나의 노예. 구성 파일만 다르고 다른 프로세스는 동일합니다.

설치 전 준비

ntpdate 172.18.0.1
iptables -f

Redis 설치

yum install redis


Redis 마스터 노드 구성


마스터 노드에서는 IP, Listening 포트, 연결 비밀번호만 구성합니다

vim /etc/redis.conf
bind 0.0.0.0       # 监听所有ip
port 6379        # 设定监听的端口
requirepass 123456      # 设定连接的密码

레 dis 슬레이브 노드 구성


슬레이브 노드가 읽기 전용으로 설정되어 있습니다

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

IV. 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 마스터 서버 구성


마스터-슬레이브 동기화를 활성화해야 합니다. 구성 파일을 수정합니다. 총 2점이에요.


1. 서버 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 
 &#39;slave_user&#39;@&#39;10.0.0.67&#39; identified by &#39;123456&#39;;

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=&#39;10.0.0.66&#39;,
master_user=&#39;slave_user&#39;,
master_password=&#39;123456&#39;,
master_log_file=&#39;mysql-bin.000001&#39;,
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에 처음 접속하시면 사용자 비밀번호를 등록하라는 메시지가 나옵니다. 계정 비밀번호.


nginx가 어떻게 예약되어 있든 Tomcat은 클라이언트의 세션을 Redis에 저장할 수 있습니다. Windwos의 Redis 관리 소프트웨어를 사용하여 Redis 마스터 및 슬레이브 데이터베이스 모두에 세션 정보가 있는지 확인할 수 있습니다.

Nginx+Tomcat+Redis를 통해 영구 세션을 구현하는 방법


위 내용은 Nginx+Tomcat+Redis를 통해 영구 세션을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제