ホームページ  >  記事  >  データベース  >  Nginx+Tomcat+Redis を介して永続セッションを実装する方法

Nginx+Tomcat+Redis を介して永続セッションを実装する方法

WBOY
WBOY転載
2023-05-28 08:37:05860ブラウズ

デプロイ環境

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

ソロブログ

Nginx+Tomcat+Redis を介して永続セッションを実装する方法

##1. nginx サーバー構成

インストール前の準備

ntpdate 172.18.0.1

iptables -f

##nginxのインストール

yum install nginx


構成ファイルを変更します


アップストリーム tomcatservers: バックエンド サーバー グループを作成し、http 内に

location を追加します。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 サーバーの設定

#2 つの Tomcat サーバー構成はまったく同じです。両方のホストで次の手順を繰り返します。

インストール前の準備

ntpdate 172.18.0.1iptables -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

mysql に接続するための Solo の設定

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

にコピーします。contest.xml ファイルを変更し、次の 2 行をファイルに追加します。

ip は redisip アドレス、port は 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 サーバーの構成

Redis サーバーは 2 つあり、マスターとスレーブが 1 つずつあります。設定ファイルが異なるだけで、他のプロセスは同じです。

#インストール前の準備

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

4. Mysqlサーバー構成

2 つの mysql サーバー (マスターとスレーブが 1 つ) があります。設定ファイルが異なるだけで、他のプロセスは同じです。

インストール前の準備

ntpdate 172.18.0.1iptables -f


mariadb のインストール

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

mysql マスター サーバーの設定

マスターとスレーブの同期ではバイナリ ログを有効にする必要があり、設定ファイルの変更には 2 つのポイントがあります。

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

Mysql スレーブ サーバー構成

Mysql マスター/スレーブ構成はサーバー 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 です。これら 2 つの項目は、マスター ノードでの

クエリの結果であり、マスター ノードでのクエリ結果と同じである必要があります。

# 在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;`

アクティブな同期状況の表示

マスター/スレーブの表示スレーブサーバーの同期状況。最後の 2 行の「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 はクライアントのセッションを Redis に保存できます。 Windwos の Redis 管理ソフトウェアを使用すると、Redis マスター データベースとスレーブ データベースの両方にセッション情報があることを確認できます。

Nginx+Tomcat+Redis を介して永続セッションを実装する方法


以上がNginx+Tomcat+Redis を介して永続セッションを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。