[Unity DarkRift2 - clustering] 1. consul - linux 구성

Changhoony·2022년 8월 8일
0

Unity_DarkRift2_Cluster

목록 보기
1/4

1. 이 서버는 무료로 해줍니다.

유니티 무료에셋 중에는 쓸만한 것들이 꽤 있다.

서버 관련에서는 [Mirror]와 [DarkRift Networking2 : 이하 DarkRift2] 가 쓸만한 데, 오늘은 DarkRift Networking2에 대해서 알아보겠다.

2. DarkRift2의 장점

원래는 유료였고 Pro 버전과 일반 버전이 지원범위가 달랐지만, 올해 상반기에 무료로 전환되었다. 이는 비용 걱정을 하는 인디 개발자들에게 희소식이 아닐 수 없다. 하지만 생각보다 가이드나 언급량이 많지 않다. 그나마 유튜브에 최근 튜토리얼 이 있긴하지만 그 외에는 다소 오래 되었다. 물론 photon이 편리하긴 하지만, 여러 기능을 직접 구현하면서 공부할 수 있다. 게다가 비용 부분은 전기세를 제외하면 별도의 비용이 들지 않는다. 따라서 처음 서버를 운용함에 있어 DarkRift2 또한 photon2 만큼 쓸만한 선택지라 할 수 있다.

3. 들어가기에 앞서..

  • 이 글은 DarkRift2 에서 clustering 개념만을 다룬다.
  • 서버간의 통신을 지원하는 기능인데, 외부 프로그램 'consul'이 필요하다

- Consul ?

멀티 클라우드 서비스 연결에 적합한 프로그램이다. 올해 한국지사가 등장해서 한국 시장을 공략하겠다는 포부를 밝혔는데, 해외에서는 이미 유명한듯 하다. 관심있거나 쓸 일이 있다면 한 번 배워두면 좋을 듯 하다. 자세한 사항은 해당 사이트를 참고하자. DarkRift2는 consul을 자신들의 클러스터링 기능을 이용하기 위한 프로그램으로 추천하고 있다.

- Clustering ?

서버간 통신을 원활하게 도와주는 기능이다. consul의 서비스 레지스트리를 통해 DarkRift2 는 서버의 수평적 확장을 추구한다.

- 오히려 좋아...

consul 입문으로도 DarkRift2는 좋다. 물론 consul 자체를 공부하려면 시간이 많이 들지만, DarkRift2에서 사용하는 범위는 비교적 단순하다. 그래서 consul을 배우는 입장이나 알아보고 싶은 입장에서는 유니티 DarkRift2 에셋이 의외로 나쁘지 않다.

- 리눅스 (우분투)

윈도우에서도 사용 가능하나, 디스코드에서 개발진 글을 읽어보니 DarkRift2는 리눅스에서도 사용할 수 있다고 한다. 굳이 리눅스로 바꿀 필요는 없지만, 필자는 다른 방식으로도 접근해보고 싶은 욕심에 리눅스를 선택했다.

4. 우분투 consul 설치

1.관리자 모드로 전환한다.

sudo passwd root
    ...
su root
    ...

2.몇 가지 프로그램을 설치하자.

apt-get install zip unzip net-tools vim

3.consul을 설치하자. (1.12.3 기준)

wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install consul

4.consul 실행 파일을 받자 (v 1.12.3).

5.압축을 풀고 consul 파일을 옮긴다.

mv consul /usr/local/bin

6.consul 실행에 필요한 config.json 파일을 담을 디렉토리 하나를 만든다.

mkdir /etc/consul.d/server

7.consul 세팅 하기

  • consul keygen으로 키를 생성하고 config.json을 만들자
consul keygen
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx

vi /etc/consul.d/server/config.json
  • 내용은 아래와 같다. :wq 종료 잊지말자.

sudo vim /etc/consul.d/server/config.json
{
	"bind_addr": "abc.def.ghi.jkl", 
    "client_addr": "0.0.0.0",
	"datacenter": "dc1",
	"data_dir": "/var/consul",
	"encrypt": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
	"log_level": "INFO",
    "ui": true,
    "domain": "yourName",
    "enable_script_checks":true,
    "dns_config":{
          "enable_truncate": true,
          "only_passing":true
    },
	"enable_syslog": true,
	"enable_debug": true,
	"node_name": "YourServerNode",
	"server": true,
	"bootstrap_expect": 3,
	"leave_on_terminate": false,
	"skip_leave_on_interrupt": true,
	"rejoin_after_leave": true,
	"retry_join": [ 
  		"abc.def.ghi.jkl:8301",
	  	"ABC.DEF.GHI.JKL:8301",
  		"123.456.789.011:8301"
	  ]
}
  • bind_addr : consul을 실행한 서버 아이피 & DarkRift2 서버 아이피. 각 서버별로 자기 아이피

  • ui : http://bind_addr:8500 로 접속을 해보면 내가 구성하고 있는 consul 을 확인할 수 있다.

  • node_name : 이름을 잘 정해주자. 나중에 service 이름과 헷갈리지 않도록 정한다.

  • bootstrap_expect : 연결된 서버수는 홀수 권장이다. DarkRift2는 1개여도 상관없다. 다만 등록한 개수만큼 서버가 모두 켜질 때까지 로그는 에러를 뱉어낸다.

  • encrypt : consul keygen으로 만든 키 값을 설정해주자. consul keyring -list로 현재 설치된 키 값을 확인할 수 있는데, 만약 부트스트랩이 1 보다 큰 경우, 각 서버의 모든 키 값은 하나로 통일 되어야 한다. 여러 개의 키가 설치되어 있다면 primary 키가 동일 해야한다. 아래는 예시.

  • 키 확인
consul keyring -list
  • 키 설치
consul keyring -install=key
  • 키 제거
consul keyring -remove=key
  • primary 키 등록
consul keyring -use=key

8.작성한 json으로 각 서버마다 consul 실행

consul agent -config-dir /etc/consul.d/server
  • bootstrap_expect가 1 보다 큰 경우 join으로 멤버들을 한 데 모으자.
consul join 123.456.789.111

9.http://bind_addr:8500 으로 접속해보면 (bind_addr 대신에 등록한 아이피) UI로 현재 상황을 확인할 수 있다.

  • 여기까지 잘 따라왔다면 이 주제에서 50% 성공이다. 다음 글에서 DarkRift2를 실행하기에 앞서 반드시 consul을 미리 켜두어야 한다.
  • consul 기타 커맨드 : 공식 문서

- 개발버전 consul agent -dev 로 실행한 사진이다.

profile
Unity 개발

0개의 댓글