현재 포탈은 사용자 수 관계 없이 이중화로 배포되고 있다.
앞단에 LB 가 위치하여, Sticky Session 방식으로 세션 관리를 하고 있었다.
서버1 로 들어와서 로그인을 하면, LB는 해당 사용자를 계속 서버1 로 연결을 해주는 데, 이때 많은 사용자들이 한번에 들어오는 경우, 서버1과 서버2로 분산되어 접속을 하겠지만, 이후에 서버2에 사용자들은 다 종료해도, 서버1을 사용한 사용자들은 계속 서버1로 접속을 하게되어 트래픽이 집중되는 현상이 발생한다.
또한 서버1이 장애가 발생하면, 서버1을 사용하던 사용자들은 서버2로 다시 접속을 하게되는데, 세션 정보가 없어서 재로그인을 해야하는 문제가 생긴다.
위 문제로 인해 Redis를 사용하여 세션정보를 다른 서버에 저장해서 서버1, 서버2가 공용으로 사용할 수 있도록 구성했다.
아래 도면처럼 서버를 구성함, 고객사 자원 제공현황을 봤을 때, 가상머신 2대만 이용 가능할 것이라고 예상

sudo apt-get install redis-server
sudo vi /etc/redis/redis.conf
--------------redis.conf 내용 중 일부 수정-------------------
bind 0.0.0.0 ::1
logfile "/var/log/redis/redis-server.log"
databases 2
requirepass "password"
masterauth "password"
maxmemory 256mb
sudo vi /etc/redis/redis.conf
--------------redis.conf 내용 중 일부 수정-------------------
bind 0.0.0.0 ::1
logfile "/var/log/redis/redis-server.log"
databases 2
requirepass "password"
masterauth "password"
maxmemory 256mb
replicaof 192.168.60.32 6379
sudo vi /etc/systemd/system/redis.service
-------------------redis.service 내용-------------------------
[Unit]
Description=Redis data structure server
Documentation=https://redis.io/documentation
Wants=network-online.target
After=network-online.target
[Service]
ExecStart=/usr/bin/redis-server /etc/redis/redis.conf --supervised systemd --daemonize no
LimitNOFILE=10032
NoNewPrivileges=yes
Type=notify
TimeoutStartSec=infinity
TimeoutStopSec=infinity
UMask=0077
User=redis
Group=redis
[Install]
WantedBy=multi-user.target
apt-get install redis-sentinel
sudo vi /etc/redis/sentinel.conf
----------------------------sentinel.conf 내용 중 일부 변경------------------------
sentinel monitor mymaster 192.168.60.32 6379 2
sentinel auth-pass mymaster password
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 120000
<master-name> <ip> <port> <quorum> 로 마스터 이름과 IP, Port 를 지정하고, quorum 을 지정sudo vi /etc/systemd/system/redis-sentinel.service
--------------------------redis-sentinel.service 내용-----------------------
[Unit]
Description=Redis sentinel
Documentation=https://redis.io/docs/management/sentinel/
Wants=network-online.target
After=network-online.target
[Service]
ExecStart=/usr/bin/redis-sentinel /etc/redis/sentinel.conf --supervised systemd --daemonize no
LimitNOFILE=10032
NoNewPrivileges=yes
Type=notify
TimeoutStartSec=infinity
TimeoutStopSec=infinity
UMask=0077
User=redis
Group=redis
[Install]
WantedBy=multi-user.target