Maison  >  Article  >  base de données  >  Comment implémenter des sessions persistantes via Nginx+Tomcat+Redis

Comment implémenter des sessions persistantes via Nginx+Tomcat+Redis

WBOY
WBOYavant
2023-05-28 08:37:05803parcourir

Environnement de déploiement

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

Paquets requis

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

solo blog

Comment implémenter des sessions persistantes via Nginx+Tomcat+Redis

1. configuration du serveur nginx

préparation avant l'installation

ntpdate 172.18.0.1
iptables -f

Installez nginx

yum install nginx

Modifiez le fichier de configuration

serveurs Tomcat en amont : créez un groupe de serveurs backend, ajoutez-le à l'intérieur de http
emplacement : faites correspondre l'URL, ajoutez-le à l'intérieur du serveur
Remarque : Les points de suspension sont d'autres paramètres par défaut. S'il n'y a pas de besoin particulier, appuyez simplement sur la valeur par défaut

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

Vérifiez le port

Lors du démarrage du serveur, vous devez vérifier si le port 80 écoute normalement

ss -ntl.

2. Configuration du serveur Tomcat

Les configurations des deux serveurs Tomcat sont exactement les mêmes. Répétez les étapes suivantes sur les deux hôtes :

Copiez la guerre. package dans le répertoire webapps et redémarrez Tomcat décompressera automatiquement ses fichiers

cp solo-2.4.1.war /usr/share/tomcat/webapps/
systemctl restart tomcat

Configurez solo

serverhost comme nom de domaine ou IP de l'équilibrage de charge frontal Si les ressources statiques ne peuvent pas être chargées après le déploiement, la plupart. Quelque chose s'est mal passé ici.

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

Configurer solo pour se connecter à mysql


La partie d'exécution h2 est utilisée par solo par défaut Après l'avoir commentée manuellement, décommentez la partie d'exécution mysql.
Définissez le nom d'utilisateur et le mot de passe de MySQL, puis remplacez 172.18.68.41 par l'adresse IP de MySQL (principale).

#### 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

Configurer les reids de connexion Tomcat

Les reids de connexion Tomcat nécessitent 3 packages logiciels :

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

Adresse de téléchargement

Copiez le package jar requis dans /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
Modifier le fichier .xml du concours et ajoutez les deux lignes suivantes au fichier.

ip est l'adresse redisip, et le port est le port sur lequel redis écoute

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 Configuration du serveur Redis

Il y a deux serveurs Redis, un maître et un esclave. Seuls les fichiers de configuration sont différents, les autres processus sont les mêmes.


Préparation avant l'installation

ntpdate 172.18.0.1
iptables -f

Installer redis

yum install redis


Configuration du nœud maître Redis

Le nœud maître configure uniquement l'IP, le port d'écoute et le mot de passe de connexion

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

re dis Configuration du nœud esclave

Le nœud esclave est défini en lecture seule

bind 0.0.0.0       # 监听所有ip
slaveof 172.18.68.31 6379    # 设定主节点的ip+端口
masterauth 123456      # 主节点的连接密码
slave-read-only yes      # 从节点为只读

Confirmez que la configuration maître-esclave est réussie


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

Configuration du serveur MySQL

Il existe deux serveurs MySQL, un maître et un esclave. Seuls les fichiers de configuration sont différents, les autres processus sont les mêmes.

Préparation avant l'installation
ntpdate 172.18.0.1

iptables -f

Installer mariadb

yum install mariadb
#
#
#运行初始化脚本对mysql进行
cd /usr/local/mysql/bin
mysql_secure_installation   #mysql初始化脚本,以下为每一项的翻译
 先回车
 是否设置root密码
 输入密码
 确认密码
 是否设置匿名用户
 是否允许root远程登录
 删除test数据库
 现在是否生效

Configuration du serveur maître MySQL

La synchronisation maître-esclave doit être activée logs et modifier les fichiers de configuration sont deux points au total.

1. L'identifiant du serveur ne doit pas entrer en conflit

2. Créez un utilisateur autorisé sur le serveur principal pour permettre à l'utilisateur d'avoir des autorisations de copie.

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.%

Créez un utilisateur autorisé sur la ligne du serveur maître afin que le serveur esclave ait la permission de copier les données du serveur maître. Les utilisateurs autorisés doivent respecter la loi du moindre privilège, et plus les adresses IP autorisées à se connecter sont précises, mieux c'est.

musql > grant replication slave on *.* to 
 &#39;slave_user&#39;@&#39;10.0.0.67&#39; identified by &#39;123456&#39;;

Configuration du serveur esclave mysql

La configuration maître-esclave de mysql n'est différente que par l'identifiant du serveur

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.%

Connectez la configuration de ligne de commande mysql au serveur esclave et configurez l'adresse IP, le nom d'utilisateur et le mot de passe du maître nœud. Les plus importants sont master_log_file et master_log_pos. Ces deux éléments sont les résultats d'une requête sur le nœud maître et ils doivent être identiques aux résultats de la requête du nœud maître.

# 在mysql主服务器中查询结果
mariadb [(none)]> show master status\g;
*************************** 1. row ***************************
  file: master-log.000003
  position: 18893845
  binlog_do_db: 
  binlog_ignore_db:


Configurer le serveur esclave 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;`

Afficher l'état de synchronisation active

Afficher l'état de synchronisation maître-esclave sur le serveur esclave. Le oui dans les deux dernières lignes indique que la synchronisation maître-esclave a réussi. Vous pouvez également interroger et vérifier l'état de synchronisation maître-esclave en interrogeant des tables, des bibliothèques et même des données.

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
Déploiement terminé

Vous pouvez accéder au blog solo déployé en accédant au 172.18.68.11/solo-2.4 via le navigateur Lorsque vous entrez pour la première fois, il vous sera demandé d'enregistrer un mot de passe utilisateur, qui est l'administrateur. mot de passe du compte.

Peu importe la façon dont nginx est planifié, Tomcat peut enregistrer la session du client dans Redis. Vous pouvez utiliser le logiciel de gestion Redis de Windwos pour voir qu'il existe des informations de session dans les bases de données Redis maître et esclave.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer