|
| 1 | +--- |
| 2 | +title: 9 스냅샷 서버 |
| 3 | +author: Steven Spencer |
| 4 | +contributors: Ezequiel Bruni |
| 5 | +tested_with: 8.5, 8.6, 9.0 |
| 6 | +tags: |
| 7 | + - lxd |
| 8 | + - enterprise |
| 9 | + - lxd 스냅샷 서버 |
| 10 | +--- |
| 11 | + |
| 12 | +# 9장: 스냅샷 서버 |
| 13 | + |
| 14 | +이 장에서는 실행하는 작업에 따라 권한이 있는 (root) 사용자와 권한이 없는 (lxdadmin) 사용자의 조합을 사용합니다. |
| 15 | + |
| 16 | +처음에 언급한 대로, LXD의 스냅샷 서버는 가능한 모든 방법으로 운영 서버와 동일해야 합니다. 그 이유는 주 서버의 하드웨어가 고장 났을 때 이를 운영 환경으로 가져가야 할 수도 있기 때문입니다. 백업이 있고, 생산 컨테이너를 빠르게 다시 시작할 수 있는 방법이 있다면, 시스템 관리자의 공황 전화와 문자 메시지를 최소화할 수 있습니다. 그것은 언제나 좋은 일입니다! |
| 17 | + |
| 18 | +따라서 스냅샷 서버를 구축하는 프로세스는 프로덕션 서버와 정확히 동일합니다. 프로덕션 서버 설정을 완벽하게 모방하기 위해, 스냅샷 서버에서 다시 **1-4장**까지의 모든 과정을 수행한 후 이어서 진행하시면 됩니다. |
| 19 | + |
| 20 | +돌아오셨군요! 이는 스냅샷 서버의 기본 설치를 성공적으로 완료한 것을 의미합니다. |
| 21 | + |
| 22 | +## Primary 및 Snapshot 서버 간의 관계 설정 |
| 23 | + |
| 24 | +계속하기 전에 몇 가지 정리 작업이 필요합니다. 첫째로, 운영 환경에서는 IP를 이름으로 해석할 수 있는 DNS 서버에 액세스할 수 있을 것입니다. |
| 25 | + |
| 26 | +우리의 실험 환경에서는 그런 기능이 없습니다. 아마도 당신도 비슷한 시나리오를 실행하고 있을 것입니다. 이러한 이유로, Primary 서버와 스냅샷 서버의 IP 주소와 이름을 /etc/hosts 파일에 추가해야 합니다. 이 작업은 root (또는 _sudo_) 사용자로 수행해야 합니다. |
| 27 | + |
| 28 | +우리의 실험 환경에서 주 LXD 서버는 192.168.1.106에서 실행되고 스냅샷 LXD 서버는 192.168.1.141에서 실행됩니다. 각 서버에 SSH로 접속하여 다음 내용을 /etc/hosts 파일에 추가하세요: |
| 29 | + |
| 30 | +``` |
| 31 | +192.168.1.106 lxd-primary |
| 32 | +192.168.1.141 lxd-snapshot |
| 33 | +``` |
| 34 | + |
| 35 | +다음으로 두 서버 간의 모든 트래픽을 허용해야 합니다. 이를 위해 /etc/firewall.conf 파일을 다음과 같이 수정합니다. 먼저 lxd-primary 서버에서 다음 줄을 추가하세요: |
| 36 | + |
| 37 | +``` |
| 38 | +firewall-cmd zone=trusted add-source=192.168.1.141 --permanent |
| 39 | +``` |
| 40 | + |
| 41 | +그리고 스냅샷 서버에서 다음 규칙을 추가하세요: |
| 42 | + |
| 43 | +``` |
| 44 | +firewall-cmd zone=trusted add-source=192.168.1.106 --permanent |
| 45 | +``` |
| 46 | + |
| 47 | +그런 다음 다시 로드합니다: |
| 48 | + |
| 49 | +``` |
| 50 | +firewall-cmd reload |
| 51 | +``` |
| 52 | + |
| 53 | +다음으로, 권한이 없는 (lxdadmin) 사용자로서 두 기기 간의 신뢰 관계를 설정해야 합니다. 이를 위해 lxd-primary에서 다음 명령을 실행하세요: |
| 54 | + |
| 55 | +``` |
| 56 | +lxc remote add lxd-snapshot |
| 57 | +``` |
| 58 | + |
| 59 | +이렇게 하면 인증서가 표시됩니다. 인증서를 수락하고 암호를 입력하라는 메시지가 나올 것입니다. 이것은 LXD 초기화 단계를 수행할 때 설정하는 "신뢰 암호"입니다. 이 모든 암호를 안전하게 보관하고 있을 것을 바랍니다. 암호를 입력하면 다음과 같은 메시지가 표시됩니다: |
| 60 | + |
| 61 | +``` |
| 62 | +서버에 저장된 클라이언트 인증서: lxd-snapshot |
| 63 | +``` |
| 64 | + |
| 65 | +역으로도 이를 수행하는 것은 문제가 되지 않습니다. 예를 들어, lxd-snapshot 서버에도 신뢰 관계를 설정하세요. 이렇게 하면 필요한 경우 lxd-snapshot 서버가 스냅샷을 lxd-primary 서버로 다시 보낼 수 있습니다. 단계를 반복하고 "lxd-snapshot" 대신에 "lxd-primary"을 사용하세요. |
| 66 | + |
| 67 | +### 첫 번째 스냅샷 마이그레이션하기 |
| 68 | + |
| 69 | +첫 번째 스냅샷을 마이그레이션하기 전에, lxd-primary에서 생성한 프로필이 lxd-snapshot에서도 생성되어 있어야 합니다. 우리의 경우 "macvlan" 프로필입니다. |
| 70 | + |
| 71 | +lxd-snapshot에서 이를 생성해야 합니다. 필요한 경우 6장으로 돌아가서 lxd-snapshot에 "macvlan" 프로필을 생성하세요. 두 서버가 상위 인터페이스 이름이 동일한 경우("enp3s0" 예를 들어), "macvlan" 프로필을 다시 생성하지 않고 lxd-snapshot으로 복사할 수 있습니다: |
| 72 | + |
| 73 | +``` |
| 74 | +lxc profile copy macvlan lxd-snapshot |
| 75 | +``` |
| 76 | + |
| 77 | +관계와 프로필이 모두 설정되었다면, 다음 단계는 실제로 스냅샷을 lxd-primary에서 lxd-snapshot으로 보내는 것입니다. 정확하게 따라오셨다면 아마도 모든 스냅샷을 삭제한 상태일 것입니다. 다른 스냅샷을 생성하세요: |
| 78 | + |
| 79 | +``` |
| 80 | +lxc snapshot rockylinux-test-9 rockylinux-test-9-snap1 |
| 81 | +``` |
| 82 | + |
| 83 | +`lxc`의 "info" 명령을 실행하면 스냅샷이 리스트의 맨 아래에 표시됩니다: |
| 84 | + |
| 85 | +``` |
| 86 | +lxc info rockylinux-test-9 |
| 87 | +``` |
| 88 | + |
| 89 | +아래와 같이 표시될 것입니다: |
| 90 | + |
| 91 | +``` |
| 92 | +rockylinux-test-9-snap1 at 2021/05/13 16:34 UTC) (stateless) |
| 93 | +``` |
| 94 | + |
| 95 | +좋아요, 행운을 빕니다! L스냅샷을 마이그레이션해 봅시다: |
| 96 | + |
| 97 | +``` |
| 98 | +lxc copy rockylinux-test-9/rockylinux-test-9-snap1 lxd-snapshot:rockylinux-test-9 |
| 99 | +``` |
| 100 | + |
| 101 | +이 명령은 컨테이너 rockylinux-test-9 내에서 스냅샷 rockylinux-test-9-snap1을 lxd-snapshot으로 보내고, 이름을 rockylinux-test-9로 지정한다는 의미입니다. |
| 102 | + |
| 103 | +잠시 후에 복사가 완료될 것입니다. 확실하게 확인하고 싶으신가요? lxd-snapshot 서버에서 `lxc list`를 실행하세요. 다음을 반환해야 합니다. |
| 104 | + |
| 105 | +``` |
| 106 | ++-------------------+---------+------+------+-----------+-----------+ |
| 107 | +| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | |
| 108 | ++-------------------+---------+------+------+-----------+-----------+ |
| 109 | +| rockylinux-test-9 | STOPPED | | | CONTAINER | 0 | |
| 110 | ++-------------------+---------+------+------+-----------+-----------+ |
| 111 | +``` |
| 112 | + |
| 113 | +성공입니다! 이제 시작해보세요. lxd-snapshot 서버에서 시작하려면 lxd-primary 서버에서 IP 주소 충돌을 피하기 위해 먼저 컨테이너를 중지해야 합니다: |
| 114 | + |
| 115 | +``` |
| 116 | +lxc stop rockylinux-test-9 |
| 117 | +``` |
| 118 | + |
| 119 | +그리고 lxd-snapshot 서버에서 다음을 실행하세요: |
| 120 | + |
| 121 | +``` |
| 122 | +lxc start rockylinux-test-9 |
| 123 | +``` |
| 124 | + |
| 125 | +모든 작업이 오류 없이 작동한다고 가정하고, lxd-snapshot에서 컨테이너를 중지한 후 lxd-primary에서 다시 시작하세요. |
| 126 | + |
| 127 | +## 컨테이너에 대해 boot.autostart를 Off로 설정 |
| 128 | + |
| 129 | +lxd-snapshot으로 복사된 스냅샷은 마이그레이션 시에 중지 상태가 될 것입니다. 그러나 전원 이벤트가 발생하거나 업데이트로 인해 스냅샷 서버를 다시 시작해야 하는 경우 문제가 발생할 수 있습니다. 이러한 경우 해당 컨테이너는 스냅샷 서버에서 시작하려고 하여 IP 주소 충돌이 발생할 수 있습니다. |
| 130 | + |
| 131 | +이를 방지하기 위해 마이그레이션된 컨테이너가 서버 재부팅 시 자동으로 시작하지 않도록 설정해야 합니다. 새로 복사한 rockylinux-test-9 컨테이너의 경우 다음과 같이 수행합니다: |
| 132 | + |
| 133 | +``` |
| 134 | +lxc config set rockylinux-test-9 boot.autostart 0 |
| 135 | +``` |
| 136 | + |
| 137 | +lxd-snapshot 서버의 각 스냅샷에 대해 이 작업을 수행하세요. 명령어에서 "0"은 `boot.autostart`가 꺼져 있음을 의미합니다. |
| 138 | + |
| 139 | +## 스냅샷 프로세스 자동화 |
| 140 | + |
| 141 | +필요할 때 스냅샷을 수동으로 생성할 수 있는 것은 좋지만, 때로는 수동으로 스냅샷을 생성하고 lxd-snapshot으로 복사하는 것이 _필요할 수_도 있습니다. lxd-snapshot에 수동으로 복사할 수도 있습니다. 그러나 대부분의 경우, 특히 lxd-primary 서버에서 여러 컨테이너를 실행할 때, 스냅샷 서버에서 스냅샷을 삭제하고 새로운 스냅샷을 생성하여 스냅샷 서버로 보내는 시간을 오후에 쓰고 싶지 않을 것입니다. 대부분의 작업에 대해서는 프로세스를 자동화하는 것이 좋습니다. |
| 142 | + |
| 143 | +먼저, lxd-primary에서 스냅샷 생성을 자동화하기 위한 프로세스를 예약해야 합니다. lxd-primary 서버의 각 컨테이너에 대해 이 작업을 수행할 것입니다. 완료되면 계속해서 작동합니다. 다음 구문을 사용하여 이 작업을 수행합니다. 타임스탬프를 위한 크론탭 항목과 유사한 점을 주목하세요. |
| 144 | + |
| 145 | +``` |
| 146 | +lxc config set [container_name] snapshots.schedule "50 20 * * *" |
| 147 | +``` |
| 148 | + |
| 149 | +이 명령은 container_name의 컨테이너 이름에 대해 매일 오후 8시 50분에 스냅샷을 생성하도록 지정합니다. |
| 150 | + |
| 151 | +우리의 rockylinux-test-9 컨테이너에 적용하기 위해 다음을 실행합니다: |
| 152 | + |
| 153 | +``` |
| 154 | +lxc config set rockylinux-test-9 snapshots.schedule "50 20 * * *" |
| 155 | +``` |
| 156 | + |
| 157 | +스냅샷 이름도 날짜에 따라 의미 있는 이름으로 설정하려고 합니다. LXD는 어디서든 UTC를 사용하므로 우리의 추적을 위해 날짜와 시간을 이해하기 쉬운 형식의 타임스탬프로 스냅샷 이름을 설정하는 것이 가장 좋습니다. |
| 158 | + |
| 159 | +``` |
| 160 | +lxc config set [container_name] snapshots.schedule "50 20 * * *" |
| 161 | +``` |
| 162 | + |
| 163 | +좋습니다. 하지만 이제는 매일 새로운 스냅샷을 생성하면서 이전 스냅샷을 삭제하지 않는 것은 원하지 않을 것입니다. 스냅샷으로 드라이브를 가득 채우게 될 것입니다. 이를 수정하기 위해 다음을 실행합니다: |
| 164 | + |
| 165 | +``` |
| 166 | +lxc config set rockylinux-test-9 snapshots.schedule "50 20 * * *" |
| 167 | +``` |
0 commit comments