Ansible을 사용하여 CockroachDB 클러스터 업그레이드

Ansible에서 CockroachDB를 배치하는 방법을 소개한 후에 본고에서 우리는 같은 CockroachDB Collection를 사용하여 CockroachDB 집단 업그레이드를 테스트할 것이다. 다음 업그레이드 유형에 사용할 것이다. v21 집단부터 시작한다.1.6:
  • 이터레이션이 v21로 업그레이드되었습니다.1.10
  • 이터레이션 성능이 저하되어 v21로 돌아갑니다.1.9
  • 주요 릴리즈 21.2.0
  • 으로 업그레이드
  • 마스터 버전 다운그레이드, 21.12로 복귀(실패)
  • 주요 릴리즈의 성능이 저하되어 21.12로 돌아가야 합니다
  • .

    설치 프로그램


    따라서 더 이상 번거로울 필요가 없습니다. 제 이전 블로그의 설명에 따라Ansible 컨트롤러를 만들고, 당신이 가장 좋아하는 클라우드에서 3개 노드 그룹을 시작합니다.
    원한다면, 그룹을 안전하지 않게 할 수 있습니다. 이것은 테스트일 뿐이므로, Kerberos나 인증서가 필요하지 않습니다.
    다음은 내config/sample.yml 파일의 중요한 부분입니다.
    # COCKROACHDB
    cockroachdb_deployment: standard
    cockroachdb_version: v21.1.6
    cockroachdb_upgrade_delay: 60
    cockroachdb_autofinalize: no
    
    이것은 v21의 표준 설치로 전환됩니다.1.6.
    마지막 두 변수는 현재 적용되지 않는다.
    일단 대본이 완성되면 다음은 제 사회자입니다.
    PLAY [print Ansible inventory for reference] ***************
    
    TASK [PRINT GROUPS MAGIC VARIABLE] *************************
    2021-11-23 10:28:13 (0:00:00.044)       0:01:10.237 ******** 
    ok: [localhost] => 
      msg:
      - all:
        - 35.226.241.43
        - 35.224.206.2
        - 34.67.60.69
        cockroachdb:
        - 35.226.241.43
        - 35.224.206.2
        - 34.67.60.69
        demo-0:
        - 35.226.241.43
        - 35.224.206.2
        - 34.67.60.69
        ungrouped: []
    
    여기에서 나는 3개의 호스트 중 하나를 선택하고 브라우저를 포트 8080으로 가리키며 DB 컨트롤러를 엽니다. 예를 들어 http://35.226.241.43:8080 집단이 시작되었고 정확한 버전으로 실행되었는지 확인합니다.

    테스트 1: 이터레이션이 v21로 업그레이드되었습니다.1.10


    우리는 첫 번째 테스트를 진행할 준비가 되어 있다.config/sample.yaml 파일에서 아래 내용에 따라 변경하고 시나리오를 다시 실행합니다
    # COCKROACHDB
    cockroachdb_deployment: upgrade
    cockroachdb_version: v21.1.10
    cockroachdb_upgrade_delay: 60
    cockroachdb_autofinalize: no
    
    다음과 같은 3가지 간단한 작업을 수행하기 위해 3개의 호스트 중 각 호스트 사이를 순차적이고 원자적으로 순환하고 있습니다.
  • 새 바이너리 파일을 설치하고 낡은 바이너리 파일을 교체한다
  • 바퀴벌레 데이터베이스 서비스 재시작
  • 60초 대기
  • 이렇게!이것이 바로 바퀴벌레의 업그레이드입니다. 아주 간단합니다!

    테스트 2: 이터레이션 다운그레이드, v21 반환.1.9


    CockroachDB는 같은 주 버전의 부차적인(패치) 버전 사이에서 강등을 지원한다. 즉, 21.1.10에서 21.1.9로 강등할 수 있다.
    필요한 버전의 마스터 버전이 현재 버전의 마스터 버전(이 경우 21.1)과 같으면 자유롭게 업그레이드하고 다운그레이드할 수 있습니다.
    앞에서 말한 바와 같이 cockroachdb_version 변수를 변경하고playbook을 다시 실행합니다.
    여기서, 나는 우리가 더 빨리 진행할 수 있도록 각 노드의 업그레이드 사이의 정지 시간을 바꾸었다.
    생산에서 이 값을 300으로 설정하는 것을 권장합니다.
    # COCKROACHDB
    cockroachdb_deployment: upgrade
    cockroachdb_version: v21.1.9
    cockroachdb_upgrade_delay: 1
    cockroachdb_autofinalize: no
    
    예상한 바와 같이, 당신은 이미 v21로 강등되었습니다.1.9.

    테스트 3: 주요 릴리즈 21.2.0으로 업그레이드


    Ansible는 자동으로 프로모션할 수 있지만, major upgrade 과 관련된 문서 페이지, 특히 "돌파적인 변경 검토"부분을 항상 보아야 합니다.
    또한 문서의 3단계에서 설명한 대로 다운그레이드 옵션을 유지할지 또는 자동으로 수행할지 결정해야 합니다.
    이 테스트에 대해, 우리는 설정 cockroachdb_autofinalize = no 을 통해 강등 옵션을 보류하기로 선택했다.시나리오 실행
    # COCKROACHDB
    cockroachdb_deployment: upgrade
    cockroachdb_version: v21.2.0
    cockroachdb_upgrade_delay: 1
    cockroachdb_autofinalize: no
    
    모든 노드에 로그인하고 SQL 프롬프트 확인
    [email protected]:26257/defaultdb> SELECT version();
                                              version
    -------------------------------------------------------------------------------------------
      CockroachDB CCL v21.2.0 (x86_64-unknown-linux-gnu, built 2021/11/15 13:58:04, go1.16.6)
    (1 row)
    
    Time: 1ms total (execution 0ms / network 1ms)
    
    [email protected]:26257/defaultdb> SHOW CLUSTER SETTING cluster.preserve_downgrade_option;       
      cluster.preserve_downgrade_option
    -------------------------------------
      21.1
    (1 row)
    
    Time: 1ms total (execution 0ms / network 0ms)
    
    예상대로 21.2로 업그레이드하고 다운그레이드 옵션을 유지했습니다.

    테스트 4: 주요 릴리즈 다운그레이드, 21.1.12로 돌아가기


    완료된 후에는 큰 버전 다운그레이드가 지원되지 않습니다.
    아직 최종적으로 결정되지는 않았지만 Ansible 시리즈는 다운그레이드를 방지하기 위해 설계되었습니다.
    변수를 업데이트하고 시나리오를 다시 실행함으로써 강등을 시도합니다
    # COCKROACHDB
    cockroachdb_deployment: upgrade
    cockroachdb_version: v21.1.12
    cockroachdb_upgrade_delay: 1
    cockroachdb_autofinalize: no
    
    예상한 바와 같이 극본에 착오가 생겼다
    TASK [cockroachdb : fail as we don't support downgrades] **************
    2021-11-23 12:08:46 (0:00:00.038)       0:00:21.364 ******************* 
    fatal: [35.226.241.43]: FAILED! => changed=false 
      msg: 'Downgrades are not supported: from v21.2.0 down to v21.1.12'
    
    이것은 내장된 안전 조치이지만, 당신이 무엇을 하는지 알고 있다면, 덮어쓸 수 있다.

    테스트 5: 주요 릴리즈 다운그레이드, 21.1.12로 강제 반환


    Playbook을 다시 실행하고 Ansible 추가 변수iknowwhatiamdoing=True를 전달합니다. 예를 들어,
    ansible-playbook site.yml -e @config/sample.yml --extra-vars=iknowwhatiamdoing=True
    
    돌아오다1.12!
    [email protected]:26257/defaultdb> SELECT version();
                                               version
    --------------------------------------------------------------------------------------------------
      CockroachDB CCL v21.1.12 (x86_64-unknown-linux-gnu, built 2021/11/15 16:01:13, go1.15.14)
    (1 row)
    
    Time: 1ms total (execution 0ms / network 0ms)
    

    결론


    CockroachDB 업그레이드는 매우 간단합니다. 업그레이드를 성공적으로 수행하는 관건은 자동화입니다.
    마지막으로 요점을 간단명료하게 살펴보겠습니다.
  • 업그레이드는 매우 간단하다. 바이너리 파일을 새로운 바이너리 파일로 바꾸기만 하면 된다systemctl restart cockroachdb.
  • 업그레이드가 순서와 원자 방식으로 실행되는지 확인한다. 즉, 한 번에 한 노드를 천천히 업그레이드한 다음에 모든 노드를 업그레이드한다.
  • 주요 업그레이드의 경우 항상 read the docs 우선 순위 및
  • 다운그레이드를 위해 문이 열려 있으므로 자동 종료가 비활성화됩니다.
  • 다음 승급에 행운을 빕니다!

    좋은 웹페이지 즐겨찾기