RHEL 9 계열(RHEL · Rocky · AlmaLinux) 에 Valkey 8.1.10 을 소스 빌드해 단일 노드로 올린다. sudo 권한이 필요하다.
이중화가 필요하면 Valkey v8.1.10 sentinel 설치 가이드 를 볼 것.
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-8.1.10.tar.gz https://github.com/valkey-io/valkey/archive/refs/tags/8.1.10.tar.gz
sudo tar -xzvf valkey-8.1.10.tar.gz
cd valkey-8.1.10
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"