FEATURE: Add 'zookeeper start|stop|stat' command to manage zk ensemble#19
FEATURE: Add 'zookeeper start|stop|stat' command to manage zk ensemble#19singsangssong wants to merge 1 commit intodevelopfrom
Conversation
|
추가적인 코멘트이자 질문으로, 현재 구현으로는 원격 서버에서 해당 원인을 살펴본 결과, 클러스터로 설정된 환경에서는 myid 파일 부재나 이에 |
zookeeper init에서 아래 작업만 수행하면 될 것 같습니다.
기존에 arcus.sh에서
이전에 |
namsic
left a comment
There was a problem hiding this comment.
환경변수 관련 동작을 먼저 정리하고 그 기준에 맞춰 나머지 PR을 다시 보는 것이 좋겠습니다.
cmd/zookeeper/start.go
Outdated
| zkAddress := os.Getenv("ZK_ADDR") | ||
| ip := strings.Split(zkAddress, ":")[0] |
There was a problem hiding this comment.
ZK_ADDR이 한 개 서버에 대한 주소만 갖는다는 것을 명확히 드러내야 합니다.
ZK_ADDR 이면 캐시 서버에 -z 인자로 전달하는 주소를 의미하는 것으로 받아들여질 수 있고,
이 값은 ,로 연결된 서버 목록이거나, 여러 서버들을 묶은 도메인(zkservers.example.com:2181)일 수 있습니다.
cmd/zookeeper/start.go
Outdated
| client, err := internal.NewSSHClient(ip) | ||
| if err != nil { | ||
| fmt.Fprintln(os.Stderr, err) | ||
| os.Exit(1) | ||
| } | ||
| session, err := client.NewSession() | ||
| if err != nil { | ||
| fmt.Fprintln(os.Stderr, err) | ||
| os.Exit(1) | ||
| } |
There was a problem hiding this comment.
SSHClient 생성하고 Session 없이 사용하는 경우가 있나요?
없다면 세션 생성까지 internal에서 처리하는 것이 낫겠습니다.
추가로, 생성한 client나 session은 close하지 않아도 되나요?
cmd/zookeeper/stat.go
Outdated
| command := fmt.Sprintf(zookeeperStatCommandTemplate, port) | ||
| client, err := internal.NewSSHClient(ip) | ||
| if err != nil { | ||
| fmt.Fprintln(os.Stderr, err) | ||
| os.Exit(1) | ||
| } | ||
| session, err := client.NewSession() | ||
| if err != nil { | ||
| fmt.Fprintln(os.Stderr, err) | ||
| os.Exit(1) | ||
| } | ||
| output, err := session.Output(command) | ||
| if err != nil { | ||
| fmt.Fprintln(os.Stderr, err) | ||
| os.Exit(1) | ||
| } | ||
| fmt.Println(string(output)) |
There was a problem hiding this comment.
- ssh로 연결하여 localhost로 다시 요청을 보내는 것이 아니라,
ip:port로 바로 stat 명령을 보내면 됩니다. - 캐시 장비에
nc가 설치되어 있지 않은 경우가 다수 있습니다.
There was a problem hiding this comment.
각 zk서버 주소와 tcp 연결을 맺고, stat명령을 요청하겠습니다.
|
현재 memcached와 zookeeper( 수정된 코드에서는 |
f54ccc4 to
5c91642
Compare
|
위 이슈에서 선언형 인터페이스로 설계가 변경되었습니다. 이에 명령형 인터페이스에 관한 PR이므로 해당 PR을 닫겠습니다. |
🔗 Related Issue
⌨️ What I did
이전
arcus.sh의zookeeper a | stop | stat기능을 arcus-cli에서도 동작하도록 합니다.3가지 명령 모두 환경변수(
ZK_PATH)를 통해 zookeeper의 경로를 결정하도록 합니다.zookeeper startZK_ADDR)의 zookeeper 서버를 구동합니다.zkServer.sh start명령을 수행합니다.zookeeper stopZK_ADDR)의 zookeeper 서버를 중지합니다.zkServer.sh stop명령을 수행합니다.zookeeper statZK_ADDR)의 zookeeper 상태를 조회합니다.echo stat | nc localhost <port>명령을 수행합니다.