RHEL 9 계열(RHEL · Rocky · AlmaLinux) 에 Valkey 9.1.2 를 소스 빌드해 단일 노드로 올린다. sudo 권한이 필요하다.
이중화가 필요하면 Valkey v9.1.2 sentinel 설치 가이드 를 볼 것.
빌드 방법과 설정 항목은 8.x 와 같다. 9.0 에서 바뀐 것은 클러스터 동작과 명령 목록이다.
| 항목 | 내용 |
|---|---|
| 슬롯 이동 | 키를 하나씩이 아니라 슬롯 단위로 한 번에 옮긴다 |
| 번호 데이터베이스 | 클러스터 모드에서도 SELECT 로 0 번 외의 DB 를 쓴다 |
| 명령 | deprecated 표시였던 25개 명령의 표시가 해제됐다 |
단일 노드 구성에는 영향이 없다. 아래 절차는 8.x 가이드와 버전 번호만 다르다.
Valkey 는 C 컴파일러와 libc 외에 의존성이 없다. TLS 를 쓰려면 OpenSSL 개발 라이브러리가 더 필요하다.
sudo dnf groupinstall -y "Development Tools"
sudo dnf install -y openssl-devel
메모리 기반이라 커널 설정을 맞춰야 경고 없이 뜬다.
echo never | sudo tee /sys/kernel/mm/transparent_hugepage/enabled
echo never | sudo tee /sys/kernel/mm/transparent_hugepage/defrag
echo 'vm.overcommit_memory = 1' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
재부팅 후에도 THP 를 꺼 두려면 /etc/rc.d/rc.local 에 위 두 줄을 넣고 실행 권한을 준다.
sudo chmod +x /etc/rc.d/rc.local
sudo useradd -r -s /sbin/nologin valkey
sudo mkdir -p /etc/valkey /var/lib/valkey /var/log/valkey /var/run/valkey
sudo chown -R valkey:valkey /var/lib/valkey /var/log/valkey /var/run/valkey
cd /usr/local/src
sudo wget -O valkey-9.1.2.tar.gz https://github.com/valkey-io/valkey/archive/refs/tags/9.1.2.tar.gz
sudo tar -xzvf valkey-9.1.2.tar.gz
cd valkey-9.1.2
sudo make
TLS 를 쓰려면 이렇게 빌드한다.
sudo make BUILD_TLS=yes
빌드가 끝나면 src 아래에 valkey-server · valkey-cli 가 생긴다.
sudo make install
valkey-server --version
바이너리가 /usr/local/bin 에 놓인다.
sudo cp valkey.conf /etc/valkey/valkey.conf
sudo chown valkey:valkey /etc/valkey/valkey.conf
최소한 다음 항목을 손본다. 항목 이름은 Redis 와 같으므로 Redis configuration 을 함께 볼 것.
bind 0.0.0.0
protected-mode no
port 6379
daemonize no
supervised systemd
dir /var/lib/valkey
logfile /var/log/valkey/valkey.log
requirepass <설정할_비밀번호>
protected-mode no와bind 0.0.0.0은 외부에서 붙게 하는 설정이다. 반드시requirepass를 함께 설정하고 방화벽으로 접근을 제한한다.
sudo tee /etc/systemd/system/valkey.service > /dev/null <<'UNIT'
[Unit]
Description=Valkey
After=network.target
[Service]
Type=notify
User=valkey
Group=valkey
ExecStart=/usr/local/bin/valkey-server /etc/valkey/valkey.conf
ExecStop=/usr/local/bin/valkey-cli shutdown
Restart=always
LimitNOFILE=65535
NoNewPrivileges=yes
StandardOutput=append:/var/log/valkey/valkey.out.log
StandardError=append:/var/log/valkey/valkey.err.log
[Install]
WantedBy=multi-user.target
UNIT
sudo systemctl daemon-reload
sudo systemctl enable valkey --now
sudo systemctl status valkey
Type=notify 는 설정의 supervised systemd 와 짝이다. 둘 중 하나만 두면 기동이 타임아웃난다.
sudo firewall-cmd --permanent --add-port=6379/tcp
sudo firewall-cmd --reload
valkey-cli -a '<설정한_비밀번호>' ping
PONG
값을 넣고 꺼내 본다.
valkey-cli -a '<설정한_비밀번호>' set hello world
valkey-cli -a '<설정한_비밀번호>' get hello
OK
"world"