의미있는 호스트 이름과 의미없는 호스트 이름 선택 [닫기]


79

다양한 하드웨어, 소프트웨어, 운영 체제, 가상 / 전용 등 다양한 서버의 퍼펫 관리 클러스터가있는 환경을 가정합니다.

의미있는 호스트 이름 (mysqlmaster01..99, mysqlslave001..999, vpnprimary, vpnbackup 등)을 선택 하시겠습니까? 아니면 책이나 영화의 문자와 같은 의미없는 호스트 이름을 선호합니까?

의미있는 호스트 이름으로 볼 수있는 문제는 이름이 일반적으로 단일 서비스를 나타내며 서버에 둘 이상의 목적이있는 경우 실제로 지저분 해집니다 (특히 서버 역할이 자주 변경되는 경우).

서비스 이름을 IP 주소에 매핑하지 않고 해당 DNS를 어떻게 유지해야합니까?

두 가지 접근 방식의 장점과 단점은 무엇이며 선택한 접근 방식으로 해결해야 할 실제 문제는 무엇입니까?


10
DNS를 제어하면 항상 두 가지를 모두 수행 할 수 있습니다.
jscott

16
난 그냥 여기두고 있습니다 : RFC 1178
gelraen

피상적으로는 의견 기반의 질문이지만 실제 답변은 경험적 폴링과 인간의인지 기능 (인간의 두뇌가 물건을 기억하는 방식)을 기반으로하는 사실에 기반합니다. 제 생각에는이 질문을 다시 열어야합니다.
dotancohen

답변:


98

옛날 옛적에 나는 명명 체계를 결정할 수있는 기회를 가졌습니다. 그래서 나는 돌아가서 개발자들에게 물어 보았습니다. 개발자들은 기능 명 (인코딩 된 형태로, 기계의 목적) 또는 니모닉 이름 (즉, 기계의 목적에 대한 암시 적 내용을 포함하지 않은 기존의 인간 명명 체계에서 가져온 이름).

38 명의 개발자 중 37 명이 선호하는 니모닉 이름; 선호하는 기능 이름은 하나뿐입니다. 그래서 나는 강의 이름을 모두 따서 명명했습니다 (가능한 많은 이름의 풀이 있으며 많은 것들이 짧고 기억하기 쉽고 타이핑하기가 쉽습니다).

인간의 두뇌는 이름에 의미를 부여하기 위해 매우 잘 설계되었습니다. 기억에 남는 이름을 제공하면 사람들은 그 이름이 무엇을 사용하는지 기억하고 사용합니다. 일반적인 배경 (예 : 강, 요소, 별, 군, 음료 등)에서 가져온 이름을 사용하면 사람들이 회사 호스트 이름을 발견했을 때 즉시 회사 호스트 이름을 인식하는 데 도움이됩니다. 그렇지 않으면 "모든 이메일이 끝났다"와 같은 문장 betelgeuse이 약간 혼동 될 수 있습니다.

반대로, 내 개발자는 이전 직장에서 정확히 무엇 pr1ms001을 기억하는 데 어려움을 겪고 있다고 생각했습니다 .

그러나 내부 DNS의 CNAME을 사용하여 니모닉 이름 매핑에 기능적 이름을 제공 했으므로 PR 사이트의 첫 번째 클러스터에있는 기본 메일 서버 pr1ms001가 그것이 현재임을 알려주십시오 orwell. 또한 시스템 당 많은 기능 이름을 사용할 수있게하므로 작업중인 기능과 관련된 기능 이름을 항상 사용하는 pr1imap001경우 해당 기능을 이동하더라도 IMAP 서버를 항상 가리킬 수 있습니다 에서 orwell까지 rhine. 또한 hudson사망 했을 때 운영 기능에 영향을주지 않으면 서 교체품의 이름을 변경할 수있어 "새롭 hudson거나 오래된 것을 의미 hudson합니까?" 혼동.


7
당신은 생각할 수도 있지만, 내 개발자들은 니모닉 방식이 다른 많은 것이 전달되었는지 여부에 관계없이 더 좋았다고 말했습니다. 모두가 어디에 있는지에 대한 자체 내부 상태 테이블을 작성했기 때문에 메모리가 더 쉽게 이름을 짓기 쉽습니다. 인간의 두뇌는 기억하기를 좋아합니다.
MadHatter

11
아이슬란드의 화산 이름을 따서 이름을 붙여야합니다.
Chloe

1
"강의 수영장"에 +1;)
Konerak

2
이것은 굉장한 아이디어이며, 훔치고 있습니다.
SpacemanSpiff

1
이 방법으로 서버 이름을 지정하면 자동 빌드 시스템에서 더 많은 작업을 수행 할 수 있지만 서버 구축의 요점은 다른 사람들이 서버를 사용하기위한 것이며, 위의 데이터는 서버를 사용해야 하는 사람들의 데이터임을 참고하십시오 . 그들이 원하는 것이 변경되었을 수도 있지만, 서버 관리자에 대한 우리의 결정은 우리의 일을 쉽게 만드는 것보다 더 많은 것을 전제로해야한다고 생각합니다.
MadHatter

93

이것은 주로 서버인지 pets또는 서버인지에 달려 있습니다 livestock.

애완 동물은 개인 이름을 얻습니다. 그것들은 서로 다르며 우리는 그 차이점에 관심을 갖습니다. 우리가 아프면, 우리는 보통 그것을 건강으로 되돌리려 고 노력합니다. 전통적으로 서버는 애완 동물이었습니다.

가축은 숫자를 얻습니다. 그것들은 대부분 동일하며 차이점이 무엇인지는 신경 쓰지 않고 보통 최소화하려고합니다. 사람이 아프면 내려 놓고 다른 사람을 얻습니다. 완전히 가상화 된 서버, 특히 AWS와 같은 IaaS 서버는 가축입니다.

대부분의 복잡한 환경에서는 혼합되어 있습니다. 예를 들어 웹 백엔드는 거의 확실하게 가축입니다. 더 필요한 경우 표준 구성으로 몇 가지를 더 세분화하십시오. 당신이 필요로하지 않으면 일부를 해제하십시오. 일부 구성에서 데이터베이스 서버는 애완 동물입니다. 각각에 특별한 설정이 많이있을 수 있습니다. 가상화 대신 베어 메탈에서 실행할 수도 있습니다.

물론 어느 환경에서나 서비스 이름을 지정하고 직접 해결할 수 있습니다. 이것은 어떤 경우에도 모범 사례입니다. 개발자는 서비스의 실제 호스트 이름을 알거나 신경 쓸 필요가 없습니다. 호스트 이름은 순전히 작동 가능한 세부 사항이어야합니다. 그런 다음 호스트 이름으로 운영 직원에게 유용한 인코딩 정보를 생각해보십시오. 예를 들어 서버가 어떤 데이터 센터에 있는지를 나타내는 것이 종종 도움이됩니다.


22
애완 동물이나 가축-그것을 넣는 좋은 방법입니다.
Michael Hampton

5
나는 최근에이 개념을 처음 본 기사를 다시 찾았습니다. gregarnette.com/blog/2012/05/cloud-servers-are-not-our-pets
Thaeli

감사합니다 @ 이안 나는 그 기사에 대한 마지막 날 사냥을했습니다 SEO 오류 heh
Rudolf Olah

18

이것은 전에 여기에서 다루어졌습니다 ...

내 추천은 기능 이름과 니모닉 이름의 조합입니다 ...

애플리케이션을 작성 중이고 주소를 지정해야하는 ccts-logserver1경우 해당 이름을 사용하지만 CNAME 또는 별명을 지정하십시오. 실제 호스트 이름은 과일이나 야채, 그리스 신화 또는 Seinfeld 캐릭터 등 원하는 모든 것이 될 수 있지만 실제 기능 이름을 연결해야하지만 사람들이 기억할 수있는 것을 유지해야 할 때 약간의 유연성을 제공합니다.

mango, DB 서버가 실패하지만 다른 것으로 대체 된 예를 생각해보십시오 peach. 아마도 기존 프로세스 및 응용 프로그램을 참조해야합니다 cmt-prod-db1. 이름을 바꾸지 않고 시스템을 교환하고 구축 할 수 있으며 응용 프로그램 (및 개발자)을 만족시킬 수 있습니다.


4

내가 일하는 곳에서는 여러 도시에서 여러 사이트, 여러 회사를 관리합니다. 우리에게는 니모닉 이름이 작동하지 않습니다. 대신 서버를 설명하는 속기 양식을 사용합니다. 다른 도메인에 여러 사무실이있는 클라이언트가 있거나 여러 도메인에 단일 사무실이 있거나 같은 도메인에 여러 사무실이 있거나 위의 모든 클라이언트가 있기 때문에 이는 잘 작동합니다!

우리에게 정보에는 회사 / 도메인, 도시, 기능, 번호가 포함됩니다. 회사의 도메인 컨트롤러의 경우 시카고의 Cypress는 다음과 같습니다.

CYPRCHDOM001 (대화에서 Cypress 기본 DOM이라고 함)

CYPRCHSQL001은 SQL 서버이고 CYPRCHMGM001은 관리 (예 : 안티 바이러스, 백업 등), CYPRCHAPP001은 혼합 응용 프로그램 서버입니다. 기억하기 쉽고 정렬하기 쉽고 가르치기 쉽습니다.


1
그렇다면 CYPRCHAPP003과 달리 CYPRCHAPP001에서 실행되는 응용 프로그램을 어떻게 기억하십니까? 나는 이것이 mnenomic 이름에도 문제가 있음을 인정할 것이지만, 당신이 어떤 종류의 기능적인 이름을 사용한다면, 구체적 일 수도 있습니다.
CVn

2
@ MichaelKjörling 서버에있는 세부 정보는 이름에 속하지 않으며 일종의 문서에 속합니다. 누군가 CYPRCHAPP001에서 실행중인 것을 알아야하는 경우 문서를 읽습니다. CYPRCHAPP001_PointofSale_Payroll_HRSoftware 등은 응용 프로그램 이동 외에도 회사에서 급여 소프트웨어를 호스팅 솔루션으로 옮길 때 잘못된 이름이됩니다.
Wulfhart

2
@Wulfhart 나는 당신의 점에 동의하지만, 무엇에 CNAME을 갖는 잘못 pointofsale, payroll등? 그렇게하면 sysadmins 외에는 급여 소프트웨어가 어디에서 실행되고 있는지 걱정할 필요가 없습니다. 다른 모든 사람들에게 그것은 효과가 있습니다. 다른 데이터 센터로 무언가를 옮기고 싶습니까? 전혀 문제 없습니다. POS 시스템 데이터베이스를 전용 서버로 옮기고 싶습니까? pointofsale-database새 위치를 가리 키도록 CNAME을 업데이트하십시오 . 등등.
CVn

1
기계를 교체해야한다고 가정하십시오. CYPRCHSQL002를 빌드하고 테스트 한 후에는 이름을 CYPRCHSQL001로 바꾸거나 (교체하지 마십시오) 이전 001을 제거한 후 이름을 002에서 001로 바꾸십시오. 그밖에?
nickgrim

@ MichaelKjörling 그것은 좋은 생각 인 것 같습니다. "사양은 이름에 속하지 않습니다"라는 의미로 컴퓨터의 호스트 이름이 아닙니다.
Wulfhart

2

호스트 이름 의 유일한 요구 사항 은 네트워크에서 고유해야한다는 것입니다.

의미는 서버 기능과 관련이있을 필요는 없습니다. 물리적 장치를 다루어야 할 경우 위치는 매우 유용 할 수 있습니다. 장치가 가상인지 물리적인지 아는 것도 유용 할 수 있습니다. 네트워크 장치, Linux 서버 또는 Windows 상자의 차이점을 알 수 있으면 로그인에 사용할 도구를 알아낼 때 매우 유용 할 수 있습니다.

이를 처리하는 방법은 다음과 같이이 정보를 장치 이름에 입력하는 것입니다.

L 또는 T-라이브 또는 테스트 P 또는 V-물리적 또는 가상 S 또는 N-서버 또는 네트워크 (우리는 Linux 서버가 없음) 고유성을 보장하기위한 일련 번호 ISO 3166-1 장치의 위치를 ​​나타내는 3 자리 국가 코드 위치.

그런 다음 DNS의 CNAMES를 사용하여 다양한 서비스 이름을 호스트 이름에 매핑합니다.

나는 이것에 대해 여러 가지 감정을 가지고 있습니다. 특정 장치가있는 곳을 찾아야하는 시간을 확실히 절약합니다. 반면에, 보석을 사용한 이전 시스템과 비교할 때 호스트 이름이 제공 될 때 주어진 서버의 기능을 기억하기가 훨씬 더 어렵습니다. 보석은 전혀 의미가 없었지만 각 사람이 자신의 연결을 만들 수 있기 때문에 쉽게 기억할 수있었습니다.

우리가 한 시스템에서 다른 시스템으로 전환 할 때 가장 큰 혼란이 일어 났을 때 한 스키마에 정착하는 것이 유일한 조언이라고 생각합니다.


나는 네이밍 토론 의 맥락에서 "디바이스가 가상인지 물리적인지 알면 유용 할 수있다"라는 의견에 동의하지 않습니다 . 물론 유용한 정보이지만 서버 이름을 읽을 때 서버에 대해 알아야 할 첫 번째 정보는 아닙니다. 또한 P2V 또는 V2P는 구성표를 손상 시키거나 서버의 이름을 바꾸어야하므로 다른 문제가 발생할 수 있습니다.
mfinni

1
내 경험상 P2V 또는 V2P는 많은 것들을 망가 뜨리고 가능한 경우 피해야합니다. 따라서 명명 규칙에 문제가되지 않습니다. 명명 규칙은 그것을 설계 한 사람의 요구 사항을 충족해야합니다. 내가 일하는 조직에서 모든 서버와 네트워크 장비를 관리하는 팀이 설계했으며 위의 사항을 말할 수 있기를 원합니다. 그것은 당신에게 옳지 않을 수도 있지만, 논쟁의 여지가 있습니다. 유일한 기술 요구 사항은 고유성입니다.
dunxd
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.