Ceph14.2.22 클러스터 배포 및 스테핑 피트 가이드(순수 인트라넷 환경, Yum 소스 없음, 시간 동기화 없음)

목차

준비

필요한 리소스:

로컬 Yum 소스 구축

기타 준비 사항:

selinux를 닫으세요

호스트 이름 수정 및 호스트 추가

시간 동기화가 켜져 있는지 확인하세요

yum은 관련 패키지를 설치합니다.

일부 ceph 명령


처음 ceph를 배포할 때는 이전에 신규 사용자를 생성하고 공간을 할당한 것 뿐이었고, 직접 배포한 것도 없고, 실제 제작 및 운영 경험도 상대적으로 적었고, 기껏해야 ceph에서 ceph로의 데이터 마이그레이션 정도만 했습니다. 알리바바 클라우드 OSS 이전.

인트라넷 환경이다 보니 일부 패키지 업로드를 제외하면 기본적으로 외부 네트워크와 격리되어 있고, 조작 인터페이스도 매우 불편합니다. 빨리 끝날 줄 알았는데 실제로 완료하는데 오후 거의 시간이 걸렸습니다. ., 몇 가지 함정에 부딪혔지만 다행히 금요일 퇴근 전에 끝냈습니다.

본 글은 간단하게 녹음한 글입니다. 같은 질문이 있으시면 직접 비공개 메시지를 보내주실 수 있습니다.

︎️

준비

준비

실제로 많은 준비 작업을 하였는데, 새로운 호스트는 다른 부서에서 제공하기 때문에 기본적인 초기화 작업은 일부 하지 않고 일반 사용자만 제공하였습니다.

필요한 리소스:

호스트 목록 구성 요소 배포
192.168.20.2 ceph-mon,ceph-mgr
192.168.20.3 ceph-mon,ceph-mgr,ceph-osd
192.168.20.4 세프몬, 세프-osd

호스트 리소스 외에 배포 패키지도 있는데 인트라넷 환경이라 외부 네트워크의 yum 소스에 접근할 수 없기 때문에 해당 패키지를 직접 다운로드한 뒤 서버로 가서 자체 yum 소스를 배포해야 한다. 관련된 패키지에는 두 가지 주요 부분이 있는데, 하나는 설치 노드에 ceph-deploy를 배포해야 한다는 것이고, 다른 하나는 ceph의 다른 패키지입니다.

이러한 rpm 패키지를 다운로드할 때 Alibaba Cloud 소스를 사용합니다. rpm 패키지를 다운로드하는 것 외에도 rpm 패키지 간의 일부 종속성을 포함하는 해당 저장소도 다운로드해야 합니다. 자체 로컬 소스를 빌드하는 경우 필요합니다.

내 노트북에서 gitbash를 사용하고 있는데, 다음 두 명령으로 해당 패키지를 준비할 수 있습니다.

#ceph rpm包for i in `curl http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64/ | awk -F '"' '{print $4}' | gerp '14.2.22|'grep rpm`;do curl -O http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64//$i ;done# ceph repodatafor i in `curl http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64/ | awk -F '"' '{print $4}' | gerp '14.2.22|'grep rpm`;do curl -O http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64//$i ;done

또한 ceph-deploy 준비는 다음과 같은 또 다른 경로입니다.

rpm 패키지와 repodata 패키지도 준비해야 합니다. ceph-deploy는 2.0.1을 사용합니다. 또한 현재 서버에 어떤 패키지가 사용 가능한지 직접 확인할 수도 있습니다. yum list|grep ceph-deploy

for i in `curl http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64/ | awk -F '"' '{print $4}' | gerp '14.2.22|'grep rpm`;do curl -O http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64//$i ;done

로컬 Yum 소스 구축

이전 글들에서 ng를 프록시로 해서 전달하는 경우가 많았는데, 여기서는 로컬 파일을 yum 소스로 직접 사용하는데, 각 호스트에서 동작해야 하는데 더 이상 ng를 사용하고 싶지 않네요.

정력 /etc/yum.repos.d/ceph.repo

[ceph]name=cephbaseurl=file:///data/mirrors/cephgpgcheck=0priority=1

방금 다운로드한 rpm 패키지와 repodata 폴더를 이 폴더 아래에 배치하고 구성 후 실행해야 합니다.

​​​​​​​

yum clean allyum makecacheyum repolist

실행시 오류는 보고되지 않습니다. yum list|grep ceph를 통해 해당 패키지가 있는지 확인하면 문제가 없을 것입니다. 세 대의 머신에서 동일한 작업을 수행해야 하는데 약간 번거롭습니다.

또한 ceph-deploy가 배포된 호스트에는 ceph-deploy의 yum 소스를 추가해야 하며 단계는 동일합니다.

이제 yum 소스가 기본적으로 구축되었습니다.

기타 준비 사항 :

방화벽을 꺼주세요. 예전에는 이 단계가 기본적으로 불필요했는데, 내부 미러나 일부 클라우드 호스트가 기본적으로 꺼져 있어서 처음에는 주의를 기울이지 않았으나 나중에 함정에 빠졌습니다.

​​​​​​​

systemctl stop firewalldsystemctl disable firewalld

selinux 끄기​​​​​​​

#一般也是关闭的,没关的话下面两步都要做#重启后生效,防止主机异常重启sed -i 's/enforcing/disabled/' /etc/selinux/config  #即时生效setenforce 0  

호스트 이름 수정 및 호스트 추가

​​​​​​​

#修改主机名hostnamectl set-hostname  ceph1#添加hostcat >> /etc/hosts << EOF192.168.20.2 ceph1192.168.20.3 ceph2192.168.20.4 ceph3EOF

시간 동기화가 켜져 있는지 확인하세요

이 것도 나중에 겪게 되는 함정으로 mon 서비스가 항상 비정상적으로 되는 현상이 발생하는데, 인트라넷 환경이고 내부 시간 동기화 서비스가 없기 때문에 마스터 노드를 서버로 사용하고 나머지 2개는 클라이언트로 사용하게 됩니다. 처음에 동기화를 설정했지만 적용되지 않았으므로 시간을 조정한 후 시간이 동기화되는지, 설정이 성공하는지 관찰하는 것이 좋습니다.
​​​​​​

#可以使用ntp或者chrony#安装chrony服务yum install chrony -y#主节点配置文件修改
vim /etc/chrony.confserver 192.168.20.2 iburstallow 192.168.20.0/24 local stratum 10#ceph2、ceph3配置server 192.168.20.2 iburst#三台重启chrongyd服务
systemctl restart chrongydsystemctl enable chronyd#其它命令chronyc -a makestepchronyc sourcestatschronyc sources -v

chronycsources -v 명령어 실행 후, 반환된 결과의 시작 부분이 ^*인지 확인하고, ^?인 경우에는 시간 동기화에 문제가 있는 것이므로 확인이 필요합니다.

이 시점에서 기본 준비 작업이 완료되었으며 전체 배포 프로세스는 나중에 시작됩니다.

︎️

클러스터 배포

yum은 관련 패키지를 설치합니다.

ceph1 실행​​​​​​​

yum install python-setuptools ceph-deploy -y#注意查看 ceph-deploy 的版本  ceph-deploy --version

ceph1, ceph2, ceph3 실행

yum install -y ceph ceph-mon ceph-osd ceph-mds ceph-radosgw ceph-mgr

관련 패키지가 배포된 후 먼저 클러스터를 초기화해야 합니다.​​​​​​

mkdir /data/my-clustercd /data/my-clusterceph-deploy new  ceph1

실행 중 예외 및 오류가 없는지 확인하십시오.​​​​​​​

#mon服务的初始化ceph-deploy mon create-initial#将配置文件拷贝到对应的节点ceph-deploy admin ceph2 ceph3#如果想部署高可用的monitor ,可以将ceph2也加入mon集群ceph-deploy mon add ceph2# 复制ceph 相关文件,执行后可以使用ceph -scp ceph.client.admin.keyring /etc/ceph/

#여기서 몇 가지 정보를 확인하십시오. 이것이 배포를 보장하고 계속 진행하기 위한 조건입니다.

1.ceph -s 클러스터가 HEALTH OK 상태입니다.

2. 월 프로세스가 있나요?

3.Mon 서비스가 실행 중인지 확인합니다.

위의 3단계는 사실 같은 의미이므로 건강이 괜찮다면 다음 2단계는 볼 필요가 없습니다.

건강이 좋지 않다면 아마도 두 가지 예외가 있을 것입니다. 하나는 시간 동기화 예외 오류이고, 다른 하나는 안전 모드 문제입니다.​​​​​​​​​​

#时间同步异常报错clock skew detected on mon.node2#禁用不 安全模式 报错“mon is allowing insecure global_id reclaim”ceph config set mon auth_allow_insecure_global_id_reclaim false

mon이 상태를 확인한 후 mgr 배포를 계속합니다.

​​​​​​​

ceph-deploy mgr create ceph1#如果想部署高可用mgr,可以将ceph2、ceph3也添加进来ceph-deploy mgr create ceph2

배포 후 ceph -s 상태가 정상인지, 관련 프로세스 및 서비스가 정상인지도 확인한다.

ps -ef|grep mgr 프로세스가 있는지 여부

여기서 겪은 문제는 초기화에는 문제가 없었으나 mgr 프로세스가 정상으로 돌아오지 않았다는 점입니다.. 서비스 시작 로그를 확인해 보니 /var 하위의 mgr 디렉토리 권한이 root 입니다. 서비스 시작은 ceph 사용자이며 권한을 수정하려면 chown이 필요합니다.

그런 다음 서비스를 다시 시작한 후 프로세스가 정상적으로 시작되었습니다.

mgr 종료 후 osd 초기화를 계속 진행합니다. 이 단계 이전에 디스크를 미리 준비해야 합니다. 포맷하지 않은 것이 가장 좋으며 그렇지 않은 경우 정리 단계를 수행해야 합니다.​​​​​​​

ceph-deploy disk zap ceph1 /dev/sda3#然后添加 osdceph-deploy osd create --data /dev/sda3 ceph2ceph-deploy osd create --data /dev/sda3 ceph3

추가 후 처리 서비스가 정상인지도 확인합니다.

일부 ceph 명령

​​​​​​​

#检查集群状态命令ceph -s# 查看osd状态ceph osd status#列出所有ceph服务systemctl status ceph\*.service ceph\*.target#启动所有服务的守护进程systemctl start ceph.target#停止所有服务的守护进程systemctl stop ceph.target#按照服务类型启动服务守护进程systemctl start ceph-osd.targetsystemctl start ceph-mon.targetsystemctl start ceph-mds.target

배포 과정에서 문제가 발생하여 롤백하고 싶다면 다음 명령어를 사용하면 됩니다.이번 배포 중에 두 번 롤백했고 세 번째에 최종적으로 배포에 성공했습니다.

#这步 部署的yum包也会删除ceph-deploy purge ceph1 ceph2 ceph3ceph-deploy forgetkeys

현시점으로 기본 배포는 끝났지만, 정식으로 사용된다면 후속 유지보수가 이제 시작된 것이고, 구체적인 내용이라면 추후 계속 업데이트될 예정이다.

추천

출처blog.csdn.net/smallbird108/article/details/125963911