Mac + Virtualbox + CoreOS + etcd2 + fleet 기본 설정(완료)
6771 단어 CoreOSVirtualBoxetcd2fleetetcd
CoreOS 클러스터 구축 3대 + Worker 3대 구성
전제
coreos 클러스터 구축 3대 구성
할 수있는 일
목표로 하는 구성
어드레싱
환경
hostname
IP 주소
메타
MacbookAir 4GB
hostserver
xxx.xxx.xxx.xxx
role=services,cabinet=one
virtualbox1
coreos-01
192.168.0.10
role=services,cabinet=one
virtualbox2
coreos-02
192.168.0.20
role=services,cabinet=one
virtualbox3
coreos-03
192.168.0.30
role=services,cabinet=one
virtualbox4
coreos-04
192.168.0.11
role=workers,cabinet=two
virtualbox5
coreos-05
192.168.0.21
role=workers,cabinet=two
virtualbox6
coreos-06
192.168.0.31
role=workers,cabinet=two
work의 3대를 신규 구축
Mac + Virtualbox + CoreOS + etcd2 + fleet 기본 설정 (1) 에서 작성한 coreos의 이미지를 3대분 클론을 실시해 갑니다.
※클론의 방법에 대해서는, 전회 기사를 참조해 주세요
작업자에게 cloud-config.yml을 설정합니다.
cloud-config.ymlvim cloud-config.yml
#cloud-config
hostname: coreos-04
write_files:
- path: /etc/environment
content: |
COREOS_PUBLIC_IPV4=192.168.0.11
COREOS_PRIVATE_IPV4=192.168.0.11
coreos:
update:
reboot-strategy: 'off'
etcd2:
proxy: on
name: coreos-04
heartbeat-interval: 1000
election-timeout: 5000
listen-client-urls: http://0.0.0.0:2379
initial-cluster: coreos-01=http://192.168.0.10:2380,coreos-02=http://192.168.0.20:2380,coreos-03=http://192.168.0.30:2380
fleet:
etcd_servers: http://127.0.0.1:2379
public-ip: 192.168.0.11
metadata: "role=workers,cabinet=two"
flannel:
interface: 192.168.0.11
units:
- name: etcd2.service
command: start
- name: fleet.service
command: start
- name: docker.service
command: start
- name: timezone.service
command: start
content: |
[Unit]
Description=timezone
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/ln -sf ../usr/share/zoneinfo/Japan /etc/localtime
- name: 10-static.network
runtime: false
content: |
[Match]
Name=enp0s3
[Network]
Address=192.168.0.11/24
DNS=8.8.8.8
DNS=8.8.4.4
ssh_authorized_keys:
- ssh-rsa ※ご自身の公開鍵
users:
- name: coreuser
passwd: $1$VIyj3wZe$HVVOEAc/H6a6YZGKCBWSD/
groups:
- sudo
- docker
ssh-authorized-keys:
- ssh-rsa ※ご自身の公開鍵
위를 "어드레싱"에 있는 hostname과 IP 주소를 맞춥니다.
cloud-config.yml 로드 수행
cloud-init
sudo coreos-cloudinit -from-file=./cloud-config.yml
sudo cp -a cloud-config.yml /var/lib/coreos-install/user_data
sudo reboot
※cloud-init 커멘드로 반영되지 않는 부분이 있으므로, 직접 user_data도 재기록해 둡니다.
etcdctl cluster-health 확인
cluster-healthetcdctl cluster-health
member 59d0611e956db7d1 is healthy: got healthy result from http://192.168.0.20:2379
member 6fb0d145a155e8ee is healthy: got healthy result from http://192.168.0.30:2379
member 7a0fb1a3031d4c79 is healthy: got healthy result from http://192.168.0.10:2379
위에서 언급했듯이 클러스터 된 IP가 표시되면 문제가 없습니다.
fleetctl 확인
fleetctlssh [email protected]
fleetctl list-machines --full
5b1639bd3cc347cf8fac0b9f597369e3 192.168.0.10 cabinet=one,role=services
6d28316711484f039eca4408627fdb0c 192.168.0.11 cabinet=two,role=workers
··· 본래라면 클러스터 및 worker도 전부 나올 것입니다만. . .
조사해 보면 다음 기사가 나왔습니다.
CoreOS 입문
또한 etcd의 name 속성은 고유해야 하기 때문에 주의해야 한다.
약어하면 기계 ID가 사용됩니다. 머신 ID는/etc/machine_id 에서 확인할 수 있다. 머신 ID는 환경을 작성하면 고정화되어 버리므로 qemu의 img나 vm을 사용해 주면 머신 ID가 변함없이 올바르게 클러스터를 구축할 수 없기 때문에 주의할 것.
루트를 마운트하여/etc/machine_id 를 삭제하고 재생성시키는 방법도 있다.
과연. . .
그래서 모든 서버에 액세스하고 다음 명령을 실행했습니다.
machinid_renamessh 192.168.0.10
sudo mv /etc/machine-id /etc/machine-id.bk
sudo reboot
#この動作を全てのサーバーに
다시 fleetctl 표시 확인
fleetctlfleetctl list-machines --full
MACHINE IP METADATA
4fb30e282c004f1794df9e91e56b14fb 192.168.0.31 cabinet=two,role=workers
5b1639bd3cc347cf8fac0b9f597369e3 192.168.0.10 cabinet=one,role=services
6d28316711484f039eca4408627fdb0c 192.168.0.11 cabinet=two,role=workers
703c849bcb924af5891ca5aae95e4e89 192.168.0.21 cabinet=two,role=workers
a6776a02935e4f01857364587836e338 192.168.0.20 cabinet=one,role=services
fffe34c5dcfa4aabbb1ba684101e521e 192.168.0.30 cabinet=one,role=services
6대분의 서버가 표시되게 되었습니다!
이제 CoreOS+etcd2+fleet을 사용하여 클러스터링 구성을 완료했습니다.
이번에 vagarant를 이용하지 않은 것에 대해
에서 이미 vagrant의 box 및 프로비저닝 파일이 배포되고 있습니다만, 우리 쪽에서 이하의 사건을 확인했습니다.
1. $num_instance를 3으로 실행하고 coreos를 vagrant up으로 부팅하면 문제없이 클러스터 구성에서 UP됩니다.
2. 클러스터가 정상적인지 확인하기 위해 vagrant halt**에서 특정 단말기를 떨어뜨리고 vagrant up | vagrant resume로 부팅해도 IP 주소가 바뀝니다. ※user_data가 보존되지 않음
3.user_data를 작성하기 위해 cloud-init/coreos-install해도 역시 휘발성이 있어 검증을 할 수 없었다.
나의 vagrant의 사용법이 좋지 않았다고 생각합니다만, 상기의 이벤트가 일어나 버렸기 때문에 단념하고 있습니다.
※단, vagrant로 이용할 수 있으면 cloud-config.yml에 기재되어 있는 IP주소등을 $public_ipv4등 변수에 옮겨놓을 수도 있으므로 매우 편리합니다.
This was intended but we should probably revise it if folks are depending on the old contents of/etc/environment. For EC2/OpenStack instances we moved the detection of $public_ipv4 and $private_ipv4 directly into coreos-cloudi both EC2-style metadata services and config drive. The old/usr/share/oem/bin/coreos-setup-environment shipped with those images hung if no metadata service was available, breaking config drive based OpenStack systems.
다음 번
본 구성을 기본 구성으로 fleetctl을 사용한 Unit, docker의 배치 방법과 failover의 내용을 접하고 싶습니다.
참고
CoreOS 입문
Reference
이 문제에 관하여(Mac + Virtualbox + CoreOS + etcd2 + fleet 기본 설정(완료)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/xshsaku/items/3b1c92a60f3d7e401061
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
vim cloud-config.yml
#cloud-config
hostname: coreos-04
write_files:
- path: /etc/environment
content: |
COREOS_PUBLIC_IPV4=192.168.0.11
COREOS_PRIVATE_IPV4=192.168.0.11
coreos:
update:
reboot-strategy: 'off'
etcd2:
proxy: on
name: coreos-04
heartbeat-interval: 1000
election-timeout: 5000
listen-client-urls: http://0.0.0.0:2379
initial-cluster: coreos-01=http://192.168.0.10:2380,coreos-02=http://192.168.0.20:2380,coreos-03=http://192.168.0.30:2380
fleet:
etcd_servers: http://127.0.0.1:2379
public-ip: 192.168.0.11
metadata: "role=workers,cabinet=two"
flannel:
interface: 192.168.0.11
units:
- name: etcd2.service
command: start
- name: fleet.service
command: start
- name: docker.service
command: start
- name: timezone.service
command: start
content: |
[Unit]
Description=timezone
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/ln -sf ../usr/share/zoneinfo/Japan /etc/localtime
- name: 10-static.network
runtime: false
content: |
[Match]
Name=enp0s3
[Network]
Address=192.168.0.11/24
DNS=8.8.8.8
DNS=8.8.4.4
ssh_authorized_keys:
- ssh-rsa ※ご自身の公開鍵
users:
- name: coreuser
passwd: $1$VIyj3wZe$HVVOEAc/H6a6YZGKCBWSD/
groups:
- sudo
- docker
ssh-authorized-keys:
- ssh-rsa ※ご自身の公開鍵
sudo coreos-cloudinit -from-file=./cloud-config.yml
sudo cp -a cloud-config.yml /var/lib/coreos-install/user_data
sudo reboot
etcdctl cluster-health
member 59d0611e956db7d1 is healthy: got healthy result from http://192.168.0.20:2379
member 6fb0d145a155e8ee is healthy: got healthy result from http://192.168.0.30:2379
member 7a0fb1a3031d4c79 is healthy: got healthy result from http://192.168.0.10:2379
ssh [email protected]
fleetctl list-machines --full
5b1639bd3cc347cf8fac0b9f597369e3 192.168.0.10 cabinet=one,role=services
6d28316711484f039eca4408627fdb0c 192.168.0.11 cabinet=two,role=workers
ssh 192.168.0.10
sudo mv /etc/machine-id /etc/machine-id.bk
sudo reboot
#この動作を全てのサーバーに
fleetctl list-machines --full
MACHINE IP METADATA
4fb30e282c004f1794df9e91e56b14fb 192.168.0.31 cabinet=two,role=workers
5b1639bd3cc347cf8fac0b9f597369e3 192.168.0.10 cabinet=one,role=services
6d28316711484f039eca4408627fdb0c 192.168.0.11 cabinet=two,role=workers
703c849bcb924af5891ca5aae95e4e89 192.168.0.21 cabinet=two,role=workers
a6776a02935e4f01857364587836e338 192.168.0.20 cabinet=one,role=services
fffe34c5dcfa4aabbb1ba684101e521e 192.168.0.30 cabinet=one,role=services
Reference
이 문제에 관하여(Mac + Virtualbox + CoreOS + etcd2 + fleet 기본 설정(완료)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/xshsaku/items/3b1c92a60f3d7e401061텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)