한 대의 가상서버(VPS)에 동일한 코인을 여러 대 설치하는 방법을 알아보겠습니다
개인지갑을 다운로드 받고 코인을 전송 후 Sync가 완료된 상태라고 가정하고 3대의 서버를 설치해 보겠는데 대상 코인은 그냥 편의상 LGS 코인으로 하겠습니다(실제 코인이 있는 것은 아니구요... 어떻게 설정하는 지만 알면 되기 때문에 굳이 코인이 없어도...ㅋ...그리고 실제 설치는 많이 해 봤습니다. 믿으세요...).
어떤 코인이든 멀티로 설치가 가능합니다. 그 방법이 핵심인데 알고 보면 뭐 그리 어렵지 않을 겁니다.
앞서 IPv6 설정 시 사용한 가상서버에 테스트로 LGS 마스터노드 서버를 설치하겠습니다. LGS 코인에 대해 알아볼까요?
거래소가 6군데이네요. 현재 예상 보상액을 보면 년 118달러입니다.
2019년 4월 2일 현재 가격이 코인 당 0.0052달러입니다. 그래프를 보면 최고 17달러까지 했던 코인이며 아직 활발한 활동을 하고 있는 코인입니다.
많은 분들이 기대를 하고 투자를 한 코인으로 알고 있습니다.
먼저 설치 가이드를 찾아보겠습니다. 홈페이지에 가보니...
메뉴에 "MN Guide"라고 링크가 있네요.
- URL: https://github.com/lgsproject/lgs-install
lgsproject/lgs-install
Shell script to install a LogisCoin Masternode on a Linux server running Ubuntu 14.04, 16.04 or 18.04 - lgsproject/lgs-install
github.com
설치 및 업데이트와 블럭 데이터 다운로드 쉘 프로그램까지 다 준비가 되어 있습니다. 개발자들이 제대로 하고 있다는 느낌이죠.
설치, 업데이트, 블럭 업데이트에 대한 가이드가 있습니다.
그럼 설치 가이드를 이용해서 설치를 합니다.
서버를 설치하기 전에 이미 개인지갑에서 mn1, mn2, mn3 주소를 생성하고 모두 정확히 1000코인 씩을 전송된 상태입니다. 마스터노드 Private Key도 이미 생성했고, TXID와 INDEX도 확인된 상태로 가정합니다.
# git clone https://github.com/lgsproject/lgs-install/
# cd lgs-install
# bash lgs-install.sh
위 3줄을 각각 순서대로 입력해서 설치합니다. 설치 중간에 마스터노드 Private Key 입력 과정이 있습니다. 개인지갑에서 생성을 하거나 그냥 Enter를 누르면 서버 설치 프로그램이 생성해줍니다. 서버가 생성해준 마스터노드 Private Key를 복사해서 역으로 개인지갑에서 사용하면 똑같습니다.
설치가 끝나면 Sync가 되는지 확인하고, Sync가 안되면 addnode 목록을 서버의 logiscoin.conf 파일에 추가해 준 후 서버를 종료하고 다시 시작해주면 Sync가 됩니다. Sycn가 끝난 후 멀티 서버 설정 과정을 시작합니다.
명령 호출 방법
먼저 명령 입력 방법을 아셔야 합니다.
# logiscoin-cli mnsync status
이 명령이 일반적으로 마스터노드 한 대를 설치한 경우의 명령입니다. Sync가 다 됐죠. 이 명령은 기본적으로 한 대의 마스터노드를 설치한 경우 현재 사용자(root)의 홈 디렉토리에 .logiscoin 이라는 폴더를 참조하게 됩니다. 그 폴더의 정보를 참조하여 실행이 되죠. 이를 좀 더 상세한 명령으로 표시하면 아래와 같습니다.
# /usr/local/bin/logiscoin-cli -datadir=/root/.logiscoin/ -conf=/root/.logiscoin/logiscoin.conf mnsync status
결과는 동일합니다. 설명을 좀 드리면...
logiscoin-cli라는 프로그램이 /usr/local/bin/ 폴더에 있구요, 이를 절대 경로로 호출하였습니다. 여기에 현재 실행하는 프로그램의 참조 데이터 폴더를 'datadir'이라는 옵션을 이용하여 지정한 것입니다. 그리고 logiscoin.conf 파일의 경로도 'conf' 옵션으로 함께 지정한 것이죠. 두 개의 옵션은 항상 이렇게 이용이 됩니다. 상세한 옵션을 보시려면 다음과 같이 입력해 보세요.
# /usr/local/bin/logiscoin-cli --help
상세한 설명이 나오니 참고하시고요.
따라서 멀티로 설치하게 되면 이렇게 데이터 폴더와 conf 파일 경로를 지정하여 호출하여야 멀티로 서버를 실행할 수 있습니다.
두 번째, 세 번째 서버를 호출하는 예는 다음과 같습니다.
# logiscoin-cli -datadir=/root/.logiscoin2/ -conf=/root/.logiscoin2/logiscoin.conf mnsync status
# logiscoin-cli -datadir=/root/.logiscoin3/ -conf=/root/.logiscoin3/logiscoin.conf mnsync status
여기서 다른 것은 logiscoin, logiscoin2, logiscoin3 와 같이 폴더만 다를 뿐입니다.
현재 서버에는 .logiscoin 폴더 하나만 있습니다. 여기서 Sync가 끝난 상태에서 서버를 중지합니다(그래야 편합니다).
# /usr/local/bin/logiscoin-cli -datadir=/root/.logiscoin/ -conf=/root/.logiscoin/logiscoin.conf stop
서버를 중지했습니다. 그런데 여기서 주의할 점이 있습니다.
최초 서버를 설치하면 systemctl 이라는 명령을 사용하여 서버를 시작하고 종료하라고 도움말 화면이 표시됩니다. 이 경우 한 대의 경우라면 문제가 없습니다.
- 서버 시작: systemctl start LogisCoin
- 서버 종료: systemctl stop LogisCoin
해당 명령을 수행하시면 서버 시작과 종료를 할 수 있습니다. 하지만 멀티 서버로 실행할 경우는 이게 안됩니다. 그래서 최초 서버 시작 후 종료한 후에는 이 명령은 사용하지 마시기 바랍니다. 다만 이 명령(systemctl start LogisCoi)으로 시작한 경우 이 명령(systemctl stop LogisCoin)으로 종료해야 합니다.
systemctrl이라는 명령은 쉽게 얘기해서 윈도우즈에서 서비스로 등록한 것과 동일합니다. 이 방법의 장점은 시스템이 재시작된 자동으로 재시작된다는 것입니다. 그런데 우리는 특별히 하드웨어 오류가 없는 한은 가상서버를 재시작 할 이유가 거의 없습니다. 이 명령에 대해서는 검색을 통해 알아보시기 바랍니다.
폴더 복사
서버를 종료하고 폴더를 복사해야 합니다. 반드시 서버를 종료해야 합니다. 서버가 실행 중에 복사를 하면 블럭 Sync가 실시간으로 일어나므로 블럭 데이터에 문제가 발생할 수 있습니다. 복사 명령은 아래와 같습니다.
# cd
# cp -r -p .logiscoin .logiscoin2
# cp -r -p .logiscoin .logiscoin3
여기서 cp는 복사 명령이구요, -r은 폴더로 빠짐없이 복사하는 옵션이며, -p는 종속성 체크를 하지 않는 옵션입니다. -r은 꼭 필요하지만 -p 옵션이 꼭 필요한 것은 아닙니다.
복사 후 폴더를 보면 다음과 같습니다.
LGS 코인은 블럭 데이터 크기가 좀 큰 편이라 한 대 가상서버에 3~4대의 마스터노드만 설치 가능합니다. 이것도 시간이 지나면 블럭 데이터가 더 커지겠죠. DASH 코인의 경우 블럭 데이터 크기가 약 8GB가 넘습니다. 이 경우 가상서버 한 대당 많아야 두 대를 설치하겠지요.
환경설정 변경
자, 이제 세대를 설치하는 환경으로 폴더 복사는 끝났네요. 다음 과정이 중요합니다. 마스터노드 설정 파일의 내용을 보도록 합니다.
rpcuser=UavFVZLSOP0
rpcpassword=s3HGIJRd3LZRD2yBHgH5af1
rpcallowip=127.0.0.1
listen=1
server=1
daemon=1
staking=0
enablezeromint=0
port=48484
logintimestamps=1
maxconnections=64
masternode=1
externalip=128.199.251.31:48484
masternodeprivkey=[Masterode_Private_Key_Value_One]
이게 일반적인 환경설정 내용입니다. 이 중에서 변경이 필요없는 기타 부분은 제외하고 내용을 보면 다음과 같습니다.
rpcuser=UavFVZLSOP0
rpcpassword=s3HGIJRd3LZRD2yBHgH5af1
rpcallowip=127.0.0.1
listen=1
server=1
daemon=1
port=48484
masternode=1
externalip=128.199.251.31:48484
masternodeprivkey=[Masterode_Private_Key_Value_One]
rpcuser와 rpcpassword는 끝에 숫자를 추가로 붙여줍니다. 첫 번째 서버에는 1을 , 두 번째 서버에는 2를, 세 번째 서버에는 3을 붙여줍니다. 이게 중복되면 안 되기 때문입니다. 즉 실행하는 서버마다 다른 값(중복되지 않는 어떤 값이든 상관이 없습니다)을 사용해야 합니다.
그리고 rpcport를 추가해 줍니다. 예를 들어 첫 번째 서버는 rpcport=484841을 두 번째 서버에는 rpcport=484842, 세 번째 서버에는 rpcport=484843을 추가해 줍니다. 이것도 마찬가지로 중복되면 안 됩니다. rpcport 값이 이미 정의되어 있는 코인도 있는데 그 경우는 끝에 간단히 숫자만 추가해 주면 됩니다.
server와 daemon은 모두 1입니다. masternode도 항상 1이구요. port는 변경하지 않습니다.
listen 설정이 문제인데 이 설정의 의미는 외부에서 이 마스터노드 서버로 접근을 가능하게 할 것인지를 설정하는 값입니다. 첫 번째 서버에 1로 설정을 했다면 두 번째, 세 번째 서버에는 0으로 줘야 합니다. 코인 프로그램이 볼 때는 IP Address가 하나인 것으로 인식이 되기 때문에 이게 모두 1이면 어느 서버인지 확인이 안됩니다 .그래서 모두 1로 설정하고 서버를 시작하면 오류가 발생합니다.
다음 masternodeprivkey는 당연히 모두 달라야겠죠. 거기에 추가해 줘야 할 것이 있는데 바로 bind 항목입니다. bind에 현재 마스터노드 서버의 IP 값을 지정해 줍니다. 네트워크 연결 설정을 하는 것이라고만 이해하시면 됩니다. externalip에는 bind에 입력한 것과 동일한 IP Address를 입력합니다. 현재 IP Address가 IPv4를 사용하고 있는데 이대로 사용해도 되구요. 저는 이해하기 쉽게 IPv6를 사용하도록 변경하겠습니다, 변경 후 첫 번째 서버의 설정값은 아래와 같습니다.
rpcuser=UavFVZLSOP01
rpcpassword=s3HGIJRd3LZRD2yBHgH5af11
rcpport=484841
rpcallowip=127.0.0.1
listen=1
server=1
daemon=1
staking=0
enablezeromint=0
port=48484
logintimestamps=1
maxconnections=64
masternode=1
bind=[2400:6180:0:d0::79:c001]
externalip=[2400:6180:0:d0::79:c001]:48484
masternodeprivkey=[Masterode_Private_Key_Value_One]
두 번째, 세 번째 설정을 보시죠.
rpcuser=UavFVZLSOP02
rpcpassword=s3HGIJRd3LZRD2yBHgH5af12
rcpport=484842
rpcallowip=127.0.0.1
listen=0
server=1
daemon=1
staking=0
enablezeromint=0
port=48484
logintimestamps=1
maxconnections=64
masternode=1
bind=[2400:6180:0:d0::79:c002]
externalip=[2400:6180:0:d0::79:c002]:48484
masternodeprivkey=[Masterode_Private_Key_Value_Two]
rpcuser=UavFVZLSOP03
rpcpassword=s3HGIJRd3LZRD2yBHgH5af13
rcpport=484843
rpcallowip=127.0.0.1
listen=0
server=1
daemon=1
staking=0
enablezeromint=0
port=48484
logintimestamps=1
maxconnections=64
masternode=1
bind=[2400:6180:0:d0::79:c003]
externalip=[2400:6180:0:d0::79:c003]:48484
masternodeprivkey=[Masterode_Private_Key_Value_Three]
각 폴더에 있는 logiscoin.conf 파일을 수정 후 저장합니다.
서버 시작
이제 각 서버를 시작합니다.
# /usr/local/bin/logiscoind -datadir=/root/.logiscoin/ -conf=/root/.logiscoin/logiscoin.conf
# /usr/local/bin/logiscoind -datadir=/root/.logiscoin2/ -conf=/root/.logiscoin2/logiscoin.conf
# /usr/local/bin/logiscoind -datadir=/root/.logiscoin3/ -conf=/root/.logiscoin3/logiscoin.conf
실행 상태를 확인해 보죠.
세 대 모두 실행 중입니다. Sync가 된 폴더를 복사했으므로 추가 부분만 Sync되어 서버가 빨리 준비됩니다.
세 대 모두 개인지갑에서 시작해 주길 기다리는 상태가 되었네요.
개인지갑 설정
이 상태에서 개인지갑을 설정합니다. masternode.conf 파일을 열고 각 서버 설정을 추가해 줍니다. 예를 들면 아래와 같습니다(이건 그냥 추가만 해주면 되는 것이죠).
저장 후 각 마스터노드를 시작해 줍니다. 그럼 정상적인 상태라면 서버가 모두 잘 시작될 것입니다.
여기서 한가지 문제(?)가 있습니다. 서버 설정 시 listen=0으로 설정한 것이 문제가 되는데 외부에서 접근이 차단되므로 마스터노드로 인정을 받는 데 시간이 좀 많이 걸립니다. listen=1이면 빠른 편이죠. 그래서 바로 시작되지 않을 수 있습니다. 그런 경우라면 서버 시작을 몇 시간 후에 해 주면 대부분은 이상 없이 잘 시작됩니다.이 부분 유념하시기 바랍니다.
따로 설명을 드리지는 않겠지만 참고로, IPv4 IP Address가 하나만 있는 경우도 멀티 설치가 가능한데 이 경우는 개인지갑 설정에는 모두 동일한 IP Address:Port로 설정하게 되구요. 서버 설정 시 rpcport와 port가 모두 다르게 설정이 되는 점이 좀 다릅니다. 그냥 그런 게 있다고만 아시고 혹시 알고 싶으시면 유튜브에 관련 설명 동영상이 있으니 찾아보세요(설명이 헷갈립니다. 동영상 몇 번 보시면 이해하실겁니다).
이렇게 해서 한 대의 가상서버에 동일 코인을 멀티로 설치하는 과정을 설명드렸습니다.
'마스터노드 구축' 카테고리의 다른 글
동일 개인지갑 프로그램 멀티 실행하기 (0) | 2020.11.30 |
---|---|
VPS 서버 상태 확인하기 (0) | 2020.11.30 |
VPS 서버 기본설정 사항 (0) | 2020.11.30 |
EMRALS 마스터노드 서버 설치하기 (0) | 2020.11.30 |
가상서버(VPS) 보안 강화하기 (0) | 2020.11.30 |
최근댓글