Issue
- When running
ceph -s
or any otherceph
commands, the commands fail to run with the following output:
$ sudo ceph -s
2015-07-07 12:27:34.049719 7f19f1653700 -1 monclient(hunting): ERROR: missing keyring, cannot use cephx for authentication
2015-07-07 12:27:34.049723 7f19f1653700 0 librados: client.admin initialization error (2) No such file or directory
- The admin keyring exists and is readable by root:
$ ll /etc/ceph/ceph.client.admin.keyring
-rw------- 1 root root 63 Jul 7 12:28 /etc/ceph/ceph.client.admin.keyring
$ sudo cat /etc/ceph/ceph.client.admin.keyring
[client.admin]
key = AQASB5NVsLbjIxAAAZ7D7SwX6MAS18G+zg2bHw==
Environment
- Red Hat Ceph Storage 1.3
- Red Hat Enterprise Linux 7.1
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.
Current Customers and Partners
Log in for full access
Log In
i’m new to ceph but have to build a mini-cluster as part of a project, i have been following an online tutorial of how to build one and all was fine until i restarted my machines the following day. now when i perform the command ceph health it returns an error saying: 2015-01-08 15:35:04.037375 7fae717fa700 0 — :/1003525 >> 192.168.1.12:6789/0 pipe(0x7fae6c000c00 sd=3 :0 s=1 pgs=0 cs=0 l=1 c=0x7fae6c000e90).fault.
and whenever i run the same command on the 192.168.1.12 machine it returns an error saying: monclient(hunting): ERROR: missing keyring, cannot use cephx for authentication.
0 librados: client.admin initialization error (2) No such file or directory. Error connecting to cluster: ObjectNotFound.
I have been searching the internet for a while now for any answers and not found much, i noticed this site tends to be good in answering most if not all questions though, so any help would be greatly appreciated thanks. Im using centos 7 on all machines if thats any help.
asked Jan 8, 2015 at 15:45
2
Check if you have the permission to read the keyring file in
/etc/ceph/ceph.client.admin.keyring
If this file is not readable by your user, or it is missing, you are not able to do
ceph -w
If the keyring is missing you can install the keyring from the admin node using ceph-deploy admin serverhostname
answered Apr 2, 2015 at 7:31
1
As the error saying: ERROR: missing keyring. That means you don’t have the keyring file.
Beside, this error,
error saying: 2015-01-08 15:35:04.037375 7fae717fa700 0 — :/1003525 >> 192.168.1.12:6789/0 pipe(0x7fae6c000c00 sd=3 :0 s=1 pgs=0 cs=0 l=1 c=0x7fae6c000e90).fault.
It means your monitor didn’t start up cause you missing the keyring file.
Step to resolve this problem:
1. Check the monitor host, and let it start up.
2. Execute the command «ceph -s» on monitor to check this cluster.
answered Jan 30, 2015 at 7:14
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and
privacy statement. We’ll occasionally send you account related emails.
Already on GitHub?
Sign in
to your account
Closed
guestisp opened this issue
Mar 19, 2014
· 17 comments
· Fixed by #62
Closed
RadosGW: missing keyring
#54
guestisp opened this issue
Mar 19, 2014
· 17 comments
· Fixed by #62
Comments
User creation fails due to missing keyring
Log detail? It uses the keyring.radosgw.gateway so this should not happen.
The key is fetched at the beginning of the playbook. Make sure that the variable «radosgw» is set to true.
Copy link
Contributor
Author
TASK: [radosgw | Create a user in radosgw] ************************************
failed: [rgw01.x.tld] => {"changed": true, "cmd": ["radosgw-admin", "--name", "client.radosgw.gateway", "user", "create", "--uid=johndoe", "--display-name=John Doe", "--email=john@example.com"], "delta": "0:00:00.128733", "end": "2014-03-19 13:03:31.907009", "item": "", "rc": 5, "start": "2014-03-19 13:03:31.778276"}
stderr: 2014-03-19 13:03:31.898458 7fe6a9a80780 -1 monclient(hunting): ERROR: missing keyring, cannot use cephx for authentication
2014-03-19 13:03:31.898468 7fe6a9a80780 0 librados: client.radosgw.gateway initialization error (2) No such file or directory
couldn't init storage provider
Does /etc/ceph/keyring.radosgw.gateway exist?
Copy link
Contributor
Author
# l /etc/ceph/keyring.radosgw.gateway
-rw------- 1 root root 74 mar 19 13:10 /etc/ceph/keyring.radosgw.gateway
Copy link
Contributor
Author
# /usr/bin/radosgw -d -c /etc/ceph/ceph.conf --debug-rgw
2014-03-20 12:27:20.007973 7ff4b5583780 0 ceph version 0.72.2 (a913ded2ff138aefb8cb84d347d72164099cfd60), process radosgw, pid 18005
2014-03-20 12:27:20.008570 7ff4b5583780 -1 WARNING: libcurl doesn't support curl_multi_wait()
2014-03-20 12:27:20.008923 7ff4b5583780 -1 WARNING: cross zone / region transfer performance may be affected
2014-03-20 12:27:20.022007 7ff4b5583780 -1 monclient(hunting): ERROR: missing keyring, cannot use cephx for authentication
2014-03-20 12:27:20.022191 7ff4b5583780 0 librados: client.admin initialization error (2) No such file or directory
2014-03-20 12:27:20.022935 7ff4b5583780 -1 Couldn't init storage provider (RADOS)
Copy link
Contributor
Author
Seems that Create RGW keyring
task does nothing:
TASK: [mon | Create RGW keyring] **********************************************
Copy link
Contributor
Author
Any update on this? RGW is not usable with this playbook.
I’ll have a look this weekend.
I can’t reproduce your issue.
I tried the following:
- deploy a full ceph stack with mon/osds/mdss but WITHOUT any RGW
- so
radosgw
was set to false ingroup_var/all
- and everything radosgw sections were commented out from the site.yml
Then after the first successful deployment I enabled those options and re-run the playbook.
The rgw key got created and the rgw process runs and answers requests…
Copy link
Contributor
Author
Here it doesn’t work:
$ grep radosgw group_vars/all
radosgw: true
radosgw_interface: eth1 # the public interface which the radosgw talks to the world with, this variable is used in the haproxy role, this does not need to be set if haproxy is not used.
cut
PLAY [rgws] *******************************************************************
GATHERING FACTS ***************************************************************
ok: [rgw01.mystorage.tld]
TASK: [radosgw | Copy RGW bootstrap key] **************************************
TASK: [radosgw | Set RGW bootstrap key permissions] ***************************
TASK: [radosgw | Add Ceph extra] **********************************************
TASK: [radosgw | Add special fastcgi repository key] **************************
TASK: [radosgw | Add special fastcgi repository] ******************************
TASK: [radosgw | Install Apache, fastcgi, and Rados Gateway] ******************
TASK: [radosgw | Install Rados Gateway vhost] *********************************
TASK: [radosgw | Create RGW directory] ****************************************
TASK: [radosgw | Install s3gw.fcgi script] ************************************
TASK: [radosgw | Disable default site] ****************************************
TASK: [radosgw | Check if RGW is started] *************************************
TASK: [radosgw | Start RGW] ***************************************************
TASK: [radosgw | Create a user in radosgw] ************************************
TASK: [radosgw | Create a swift subuser] **************************************
TASK: [radosgw | Create a swift subuser key] **********************************
TASK: [radosgw | Copy RGW bootstrap key] **************************************
ok: [rgw01.mystorage.tld]
TASK: [radosgw | Set RGW bootstrap key permissions] ***************************
ok: [rgw01.mystorage.tld]
TASK: [radosgw | Add Ceph extra] **********************************************
ok: [rgw01.mystorage.tld]
TASK: [radosgw | Install Apache, fastcgi and Rados Gateway] *******************
ok: [rgw01.mystorage.tld] => (item=apache2,libapache2-mod-fastcgi,radosgw)
TASK: [radosgw | Install default httpd.conf] **********************************
ok: [rgw01.mystorage.tld]
TASK: [radosgw | Enable some apache mod rewrite and fastcgi] ******************
changed: [rgw01.mystorage.tld] => (item=a2enmod rewrite)
changed: [rgw01.mystorage.tld] => (item=a2enmod fastcgi)
TASK: [radosgw | Install Rados Gateway vhost] *********************************
ok: [rgw01.mystorage.tld]
TASK: [radosgw | Create RGW directory] ****************************************
ok: [rgw01.mystorage.tld]
TASK: [radosgw | Enable Rados Gateway vhost and disable default site] *********
changed: [rgw01.mystorage.tld] => (item=a2ensite rgw.conf)
changed: [rgw01.mystorage.tld] => (item=a2dissite default)
TASK: [radosgw | Install s3gw.fcgi script] ************************************
ok: [rgw01.mystorage.tld]
TASK: [radosgw | Check if RGW is started] *************************************
failed: [rgw01.mystorage.tld] => {"changed": true, "cmd": ["/etc/init.d/radosgw", "status"], "delta": "0:00:00.029490", "end": "2014-03-24 11:21:44.441323", "item": "", "rc": 1, "start": "2014-03-24 11:21:44.411833"}
stdout: /usr/bin/radosgw is not running.
...ignoring
TASK: [radosgw | Start RGW] ***************************************************
changed: [rgw01.mystorage.tld]
TASK: [radosgw | Create a user in radosgw] ************************************
Hangs on Create a user in radosgw
RadosGW is not running due to a missing keyring
But the key exists in your /etc/ceph, so maybe your ceph.conf is wrong, can I see it?
Copy link
Contributor
Author
Obviously fsid is right, i’ve removed it for posting un GH
# Ansible managed: modified on 2014-03-20 12:49:25 by ale
[global]
auth cluster required = cephx
auth service required = cephx
auth client required = cephx
fsid = xxx
osd pool default pg num = 8192
osd pool default pgp num = 8192
osd pool default size = 3
[mon]
[mon.osd13]
host = osd13
mon addr = 10.0.0.3
[mon.osd14]
host = osd14
mon addr = 10.0.0.4
[mon.osd12]
host = osd12
mon addr = 10.0.0.2
[osd]
osd mkfs type = xfs
osd journal size = 16384
cluster_network = 10.0.0.0/24
public_network = 10.0.0.0/24
[client.radosgw.gateway]
host = rgw01.mystorage.tld
keyring = /etc/ceph/keyring.radosgw.gateway
rgw socket path = /tmp/radosgw.sock
log file = /var/log/ceph/radosgw.log
rgw data = /var/lib/ceph/radosgw/rgw01
rgw print continue = false
# ls -la /etc/ceph/
totale 20
drwxr-xr-x 2 root root 4096 mar 24 11:36 .
drwxr-xr-x 73 root root 4096 mar 20 12:04 ..
-rw-r--r-- 1 root root 884 mar 20 12:57 ceph.conf
-rw------- 1 root root 74 mar 24 11:36 keyring.radosgw.gateway
-rw-r--r-- 1 root root 92 dic 20 23:05 rbdmap
And rgw keeps using client.admin?
Copy link
Contributor
Author
Yes
# radosgw --conf /etc/ceph/ceph.conf -d
2014-03-25 14:25:57.903743 7fe1ff11b780 0 ceph version 0.72.2 (a913ded2ff138aefb8cb84d347d72164099cfd60), process radosgw, pid 23082
2014-03-25 14:25:57.904343 7fe1ff11b780 -1 WARNING: libcurl doesn't support curl_multi_wait()
2014-03-25 14:25:57.904753 7fe1ff11b780 -1 WARNING: cross zone / region transfer performance may be affected
2014-03-25 14:25:57.917953 7fe1ff11b780 -1 monclient(hunting): ERROR: missing keyring, cannot use cephx for authentication
2014-03-25 14:25:57.918144 7fe1ff11b780 0 librados: client.admin initialization error (2) No such file or directory
2014-03-25 14:25:57.918939 7fe1ff11b780 -1 Couldn't init storage provider (RADOS)
Running it manually doesn’t help because the default behavior is to use the admin user, use —name to use the client.radosgw.gateway user.
However doing /etc/init.d/radosgw start
will work
Copy link
Contributor
Author
Copy link
Contributor
Author
By the way, using shortname in host
is required by ceph
guestisp
added a commit
to guestisp/ceph-ansible
that referenced
this issue
Mar 26, 2014
This was referenced
May 17, 2019
2 participants
-
#1
Hello,
I have a problem : when I reboot my node the osd don’t start.
I have this in my syslog :
Code:
Starting Ceph mon.0 on Proxmox-XXX...
Mar 8 14:31:54 Proxmox-XXX ceph[2178]: Running as unit ceph-mon.0.1457443914.385741122.service.
Mar 8 14:31:54 Proxmox-XXX systemd[1]: Starting /bin/bash -c ulimit -n 32768; /usr/bin/ceph-mon -i 0 --pid-file /var/run/ceph/mon.0.pid -c /etc/ceph/ceph.conf --cluster ceph -f...
Mar 8 14:31:54 Proxmox-XXX systemd[1]: Started /bin/bash -c ulimit -n 32768; /usr/bin/ceph-mon -i 0 --pid-file /var/run/ceph/mon.0.pid -c /etc/ceph/ceph.conf --cluster ceph -f.
Mar 8 14:31:54 Proxmox-XXX ceph[2178]: Starting ceph-create-keys on Proxmox-XXX...
Mar 8 14:31:54 Proxmox-XXX ceph[2178]: === osd.0 ===
Mar 8 14:31:54 Proxmox-XXX ceph[2178]: 2016-03-08 14:31:54.699766 7fd74c926700 -1 monclient(hunting): ERROR: missing keyring, cannot use cephx for authentication
Mar 8 14:31:54 Proxmox-XXX ceph[2178]: 2016-03-08 14:31:54.699770 7fd74c926700 0 librados: osd.0 initialization error (2) No such file or directory
Mar 8 14:31:54 Proxmox-XXX ceph[2178]: Error connecting to cluster: ObjectNotFound
Mar 8 14:31:54 Proxmox-XXX ceph[2178]: failed: 'timeout 30 /usr/bin/ceph -c /etc/ceph/ceph.conf --name=osd.0 --keyring=/var/lib/ceph/osd/ceph-0/keyring osd crush create-or-move -- 0 0.02 host=Proxmox-XXX root=default'
It’s the same error for my 4 OSDs.
However when the node is ready I’m able to run manually ceph (systemctl restart ceph.service) and the cluster works fine…
My question : why ceph cannot run at boot but I can run it manually ?
Thank you,
-
#2
mmmm, maybe ceph try to start before /etc/pve is mounted ?(pve-cluster service)
-
#3
I have moved the keering to another place (/etc/ceph) and edit the ceph.conf
I have the same result
client.admin key is not created after mon create-intial
Description
Run: http://pulpito.ceph.com/teuthology-2016-09-20_05:00:02-smoke-master-testing-basic-vps/
Job: 425631
Logs: http://qa-proxy.ceph.com/teuthology/teuthology-2016-09-20_05:00:02-smoke-master-testing-basic-vps/425631/teuthology.log
2016-09-20T05:15:28.869 INFO:teuthology.orchestra.run.vpm079.stderr:[ceph_deploy.mon][INFO ] mon.vpm079 monitor has reached quorum! 2016-09-20T05:15:28.869 INFO:teuthology.orchestra.run.vpm079.stderr:[ceph_deploy.mon][INFO ] all initial monitors are running and have formed quorum 2016-09-20T05:15:28.870 INFO:teuthology.orchestra.run.vpm079.stderr:[ceph_deploy.mon][INFO ] Running gatherkeys... 2016-09-20T05:15:28.877 INFO:teuthology.orchestra.run.vpm079.stderr:[ceph_deploy.gatherkeys][INFO ] Storing keys in temp directory /tmp/tmpLrLoqS 2016-09-20T05:15:28.911 INFO:teuthology.orchestra.run.vpm079.stderr:[vpm079][DEBUG ] connection detected need for sudo 2016-09-20T05:15:29.058 INFO:teuthology.orchestra.run.vpm079.stderr:[vpm079][DEBUG ] connected to host: vpm079 2016-09-20T05:15:29.092 INFO:teuthology.orchestra.run.vpm079.stderr:[vpm079][DEBUG ] detect platform information from remote host 2016-09-20T05:15:29.092 INFO:teuthology.orchestra.run.vpm079.stderr:[vpm079][DEBUG ] detect machine type 2016-09-20T05:15:29.093 INFO:teuthology.orchestra.run.vpm079.stderr:[vpm079][DEBUG ] find the location of an executable 2016-09-20T05:15:29.093 INFO:teuthology.orchestra.run.vpm079.stderr:[vpm079][INFO ] Running command: sudo /sbin/initctl version 2016-09-20T05:15:29.093 INFO:teuthology.orchestra.run.vpm079.stderr:[vpm079][DEBUG ] get remote short hostname 2016-09-20T05:15:29.093 INFO:teuthology.orchestra.run.vpm079.stderr:[vpm079][DEBUG ] fetch remote file 2016-09-20T05:15:29.093 INFO:teuthology.orchestra.run.vpm079.stderr:[vpm079][INFO ] Running command: sudo /usr/bin/ceph --connect-timeout=25 --cluster=ceph --admin-daemon=/var/run/ceph/ceph-mon.vpm079.asok mon_status 2016-09-20T05:15:29.125 INFO:teuthology.orchestra.run.vpm079.stderr:[vpm079][INFO ] Running command: sudo /usr/bin/ceph --connect-timeout=25 --cluster=ceph --name mon. --keyring=/var/lib/ceph/mon/ceph-vpm079/keyring auth get client.admin 2016-09-20T05:20:29.184 INFO:teuthology.orchestra.run.vpm079.stderr:[vpm079][WARNING] No data was received after 300 seconds, disconnecting... 2016-09-20T05:20:29.435 INFO:teuthology.orchestra.run.vpm079.stderr:[vpm079][ERROR ] "ceph auth get-or-create for keytype admin returned -1 2016-09-20T05:20:29.436 INFO:teuthology.orchestra.run.vpm079.stderr:Traceback (most recent call last): 2016-09-20T05:20:29.436 INFO:teuthology.orchestra.run.vpm079.stderr: File "/usr/lib/python2.7/logging/__init__.py", line 851, in emit 2016-09-20T05:20:29.436 INFO:teuthology.orchestra.run.vpm079.stderr: msg = self.format(record) 2016-09-20T05:20:29.436 INFO:teuthology.orchestra.run.vpm079.stderr: File "/usr/lib/python2.7/logging/__init__.py", line 724, in format 2016-09-20T05:20:29.437 INFO:teuthology.orchestra.run.vpm079.stderr: return fmt.format(record) 2016-09-20T05:20:29.437 INFO:teuthology.orchestra.run.vpm079.stderr: File "/home/ubuntu/cephtest/ceph-deploy/ceph_deploy/util/log.py", line 56, in format 2016-09-20T05:20:29.437 INFO:teuthology.orchestra.run.vpm079.stderr: return logging.Formatter.format(self, record) 2016-09-20T05:20:29.437 INFO:teuthology.orchestra.run.vpm079.stderr: File "/usr/lib/python2.7/logging/__init__.py", line 464, in format 2016-09-20T05:20:29.437 INFO:teuthology.orchestra.run.vpm079.stderr: record.message = record.getMessage() 2016-09-20T05:20:29.438 INFO:teuthology.orchestra.run.vpm079.stderr: File "/usr/lib/python2.7/logging/__init__.py", line 328, in getMessage 2016-09-20T05:20:29.438 INFO:teuthology.orchestra.run.vpm079.stderr: msg = msg % self.args 2016-09-20T05:20:29.438 INFO:teuthology.orchestra.run.vpm079.stderr:TypeError: not all arguments converted during string formatting 2016-09-20T05:20:29.438 INFO:teuthology.orchestra.run.vpm079.stderr:Logged from file gatherkeys.py, line 213 2016-09-20T05:20:29.439 INFO:teuthology.orchestra.run.vpm079.stderr:Traceback (most recent call last): 2016-09-20T05:20:29.439 INFO:teuthology.orchestra.run.vpm079.stderr: File "/usr/lib/python2.7/logging/__init__.py", line 851, in emit 2016-09-20T05:20:29.439 INFO:teuthology.orchestra.run.vpm079.stderr: msg = self.format(record) 2016-09-20T05:20:29.439 INFO:teuthology.orchestra.run.vpm079.stderr: File "/usr/lib/python2.7/logging/__init__.py", line 724, in format 2016-09-20T05:20:29.440 INFO:teuthology.orchestra.run.vpm079.stderr: return fmt.format(record) 2016-09-20T05:20:29.440 INFO:teuthology.orchestra.run.vpm079.stderr: File "/usr/lib/python2.7/logging/__init__.py", line 464, in format 2016-09-20T05:20:29.440 INFO:teuthology.orchestra.run.vpm079.stderr: record.message = record.getMessage() 2016-09-20T05:20:29.440 INFO:teuthology.orchestra.run.vpm079.stderr: File "/usr/lib/python2.7/logging/__init__.py", line 328, in getMessage 2016-09-20T05:20:29.441 INFO:teuthology.orchestra.run.vpm079.stderr: msg = msg % self.args 2016-09-20T05:20:29.441 INFO:teuthology.orchestra.run.vpm079.stderr:TypeError: not all arguments converted during string formatting 2016-09-20T05:20:29.441 INFO:teuthology.orchestra.run.vpm079.stderr:Logged from file gatherkeys.py, line 213 2016-09-20T05:20:29.442 INFO:teuthology.orchestra.run.vpm079.stderr:[ceph_deploy.gatherkeys][ERROR ] Failed to connect to host:vpm079 2016-09-20T05:20:29.442 INFO:teuthology.orchestra.run.vpm079.stderr:[ceph_deploy.gatherkeys][INFO ] Destroy temp directory /tmp/tmpLrLoqS 2016-09-20T05:20:29.447 INFO:teuthology.orchestra.run.vpm079.stderr:[ceph_deploy][ERROR ] RuntimeError: Failed to connect any mon
History
#4
Updated by Alfredo Deza over 6 years ago
This failure appears to be from remoto, but it is safe to ignore. What is happening here is that there was no error coming back from the remote command and
the code that translates that for reporting breaks because it expects something.
The failure origin is still this:
2016-09-20T05:15:29.125 INFO:teuthology.orchestra.run.vpm079.stderr:[vpm079][INFO ] Running command: sudo /usr/bin/ceph --connect-timeout=25 --cluster=ceph --name mon. --keyring=/var/lib/ceph/mon/ceph-vpm079/keyring auth get client.admin
#5
Updated by Vasu Kulkarni over 6 years ago
- Priority changed from Normal to High
So I did the following experiments and this looks like an issue outside ceph-deploy, the absence of keyring is causing other failures during ceph-deploy suite(constantly failing to get admin keyring as seen in logs)
1) Install ceph-deploy and use stable jewel version ( —stable=jewel)
after mon create-initial, it creates the client.admin keyring on ‘monitor’ node
[vasu@mira085 ~]$ sudo ls -lt /etc/ceph total 12 -rw-------. 1 ceph ceph 63 Nov 8 00:29 ceph.client.admin.keyring -rw-r--r--. 1 root root 219 Nov 8 00:29 ceph.conf -rw-------. 1 root root 0 Nov 8 00:29 tmpBVjBPO -rwxr-xr-x. 1 root root 92 Sep 21 11:35 rbdmap [vasu@mira085 ~]$ sudo ceph -v ceph version 10.2.3 (ecc23778eb545d8dd55e2e4735b53cc93f92e65b)
2) install on the current jewel node ( —dev=jewel) and notice that it doesn’t create the file, the tmp file created is empty
[vasu@mira085 ~]$ sudo ls -lt /etc/ceph total 8 -rw-------. 1 ceph ceph 0 Nov 8 00:41 ceph.client.admin.keyring.44128.tmp -rw-r--r--. 1 root root 219 Nov 8 00:40 ceph.conf -rw-------. 1 root root 0 Nov 8 00:40 tmpPZ8I6q -rwxr-xr-x. 1 root root 92 Nov 7 15:00 rbdmap [vasu@mira085 ~]$ sudo ceph -s 2016-11-08 00:41:35.480037 7f6a34f46700 -1 auth: unable to find a keyring on /etc/ceph/ceph.client.admin.keyring,/etc/ceph/ceph.keyring,/etc/ceph/keyring,/etc/ceph/keyring.bin: (2) No such file or directory 2016-11-08 00:41:35.480061 7f6a34f46700 -1 monclient(hunting): ERROR: missing keyring, cannot use cephx for authentication 2016-11-08 00:41:35.480063 7f6a34f46700 0 librados: client.admin initialization error (2) No such file or directory Error connecting to cluster: ObjectNotFound [vasu@mira085 ~]$ sudo ceph -v ceph version 10.2.3-356-g0c38c46 (0c38c464fff2280a6345b470f1c83aa6229776cc) [vasu@mira085 ~]$ sudo ceph -k /etc/ceph/ceph.client.admin.keyring.44128.tmp 2016-11-08 00:41:55.251239 7f61bc4fc700 0 librados: client.admin authentication error (22) Invalid argument Error connecting to cluster: Error [vasu@mira085 ~]$ sudo cat /etc/ceph/ceph.client.admin.keyring.44128.tmp
#6
Updated by Vasu Kulkarni over 6 years ago
Also for point 2) the gatherkeys that runs after monitor create is able to get it to local dir
[client.admin] key = AQAsHyFYRH0sGxAAiDRCI03n9qljFG7J7SHPNw== [ubuntu@mira085 2]$ ls -lt total 108 -rw-rw-r--. 1 ubuntu ubuntu 79779 Nov 8 00:58 ceph-deploy-ceph.log -rw-------. 1 ubuntu ubuntu 71 Nov 8 00:41 ceph.bootstrap-rgw.keyring -rw-------. 1 ubuntu ubuntu 71 Nov 8 00:41 ceph.bootstrap-osd.keyring -rw-------. 1 ubuntu ubuntu 71 Nov 8 00:41 ceph.bootstrap-mds.keyring -rw-------. 1 ubuntu ubuntu 63 Nov 8 00:41 ceph.client.admin.keyring -rw-rw-r--. 1 ubuntu ubuntu 219 Nov 8 00:38 ceph.conf -rw-------. 1 ubuntu ubuntu 73 Nov 8 00:38 ceph.mon.keyring
#8
Updated by Owen Synge over 6 years ago
I think the issue is here:
/usr/bin/ceph —connect-timeout=25 —cluster=ceph —name mon. —keyring=/var/lib/ceph/mon/ceph-vpm079/keyring auth get client.admin
When the line should be with a «get-or-create».
I will check further.
#9
Updated by Owen Synge over 6 years ago
Just a further update I think ceph-deploy should have the following command to get the admin key.
/usr/bin/ceph —connect-timeout=25 —cluster=ceph —name mon. —keyring=/var/lib/ceph/mon/ceph-osceph-02/keyring auth get-or-create client.admin osd ‘allow *’ mon ‘allow *’ mds ‘allow *’
I will now make a patch to ceph-deploy to try and fix this issue.
#11
Updated by Owen Synge over 6 years ago
I looked into this further and reran the tests with <yuriw>
in this test run:
http://qa-proxy.ceph.com/teuthology/vasu-2016-11-06_03:06:04-ceph-deploy-jewel—basic-vps/525668/teuthology.log
Further investigation of the logs invalidates my previous comments. Notably:
2016-11-07T20:23:58.007 INFO:teuthology.orchestra.run.vpm041.stderr:[ceph_deploy.mon][INFO ] Running gatherkeys...
2016-11-07T20:23:58.007 INFO:teuthology.orchestra.run.vpm041.stderr:[ceph_deploy.gatherkeys][INFO ] Storing keys in temp directory /tmp/tmphABqKm
2016-11-07T20:23:58.037 INFO:teuthology.orchestra.run.vpm041.stderr:[vpm041][DEBUG ] connection detected need for sudo
2016-11-07T20:23:58.076 INFO:teuthology.orchestra.run.vpm041.stderr:[vpm041][DEBUG ] connected to host: vpm041
2016-11-07T20:23:58.076 INFO:teuthology.orchestra.run.vpm041.stderr:[vpm041][DEBUG ] detect platform information from remote host
2016-11-07T20:23:58.101 INFO:teuthology.orchestra.run.vpm041.stderr:[vpm041][DEBUG ] detect machine type
2016-11-07T20:23:58.106 INFO:teuthology.orchestra.run.vpm041.stderr:[vpm041][DEBUG ] get remote short hostname
2016-11-07T20:23:58.106 INFO:teuthology.orchestra.run.vpm041.stderr:[vpm041][DEBUG ] fetch remote file
2016-11-07T20:23:58.112 INFO:teuthology.orchestra.run.vpm041.stderr:[vpm041][INFO ] Running command: sudo /usr/bin/ceph --connect-timeout=25 --cluster=ceph --admin-daemon=/var/run/ceph/ceph-mon.vpm041.asok mon_status
2016-11-07T20:23:58.264 INFO:teuthology.orchestra.run.vpm041.stderr:[vpm041][INFO ] Running command: sudo /usr/bin/ceph --connect-timeout=25 --cluster=ceph --name mon. --keyring=/var/lib/ceph/mon/ceph-vpm041/keyring auth get client.admin
2016-11-07T20:23:58.895 INFO:teuthology.orchestra.run.vpm041.stderr:[vpm041][INFO ] Running command: sudo /usr/bin/ceph --connect-timeout=25 --cluster=ceph --name mon. --keyring=/var/lib/ceph/mon/ceph-vpm041/keyring auth get-or-create client.admin osd allow * mds allow * mon allow *
2016-11-07T20:23:59.348 INFO:teuthology.orchestra.run.vpm041.stderr:[vpm041][INFO ] Running command: sudo /usr/bin/ceph --connect-timeout=25 --cluster=ceph --name mon. --keyring=/var/lib/ceph/mon/ceph-vpm041/keyring auth get client.bootstrap-mds
2016-11-07T20:23:59.692 INFO:teuthology.orchestra.run.vpm041.stderr:[vpm041][INFO ] Running command: sudo /usr/bin/ceph --connect-timeout=25 --cluster=ceph --name mon. --keyring=/var/lib/ceph/mon/ceph-vpm041/keyring auth get-or-create client.bootstrap-mds mon allow profile bootstrap-mds
2016-11-07T20:24:00.222 INFO:teuthology.orchestra.run.vpm041.stderr:[vpm041][INFO ] Running command: sudo /usr/bin/ceph --connect-timeout=25 --cluster=ceph --name mon. --keyring=/var/lib/ceph/mon/ceph-vpm041/keyring auth get client.bootstrap-osd
2016-11-07T20:24:00.778 INFO:teuthology.orchestra.run.vpm041.stderr:[vpm041][INFO ] Running command: sudo /usr/bin/ceph --connect-timeout=25 --cluster=ceph --name mon. --keyring=/var/lib/ceph/mon/ceph-vpm041/keyring auth get-or-create client.bootstrap-osd mon allow profile bootstrap-osd
2016-11-07T20:24:01.133 INFO:teuthology.orchestra.run.vpm041.stderr:[vpm041][INFO ] Running command: sudo /usr/bin/ceph --connect-timeout=25 --cluster=ceph --name mon. --keyring=/var/lib/ceph/mon/ceph-vpm041/keyring auth get client.bootstrap-rgw
2016-11-07T20:24:01.489 INFO:teuthology.orchestra.run.vpm041.stderr:[vpm041][INFO ] Running command: sudo /usr/bin/ceph --connect-timeout=25 --cluster=ceph --name mon. --keyring=/var/lib/ceph/mon/ceph-vpm041/keyring auth get-or-create client.bootstrap-rgw mon allow profile bootstrap-rgw
2016-11-07T20:24:02.179 INFO:teuthology.orchestra.run.vpm041.stderr:[ceph_deploy.gatherkeys][INFO ] Storing ceph.client.admin.keyring
2016-11-07T20:24:02.180 INFO:teuthology.orchestra.run.vpm041.stderr:[ceph_deploy.gatherkeys][INFO ] Storing ceph.bootstrap-mds.keyring
2016-11-07T20:24:02.180 INFO:teuthology.orchestra.run.vpm041.stderr:[ceph_deploy.gatherkeys][INFO ] keyring 'ceph.mon.keyring' already exists
2016-11-07T20:24:02.180 INFO:teuthology.orchestra.run.vpm041.stderr:[ceph_deploy.gatherkeys][INFO ] Storing ceph.bootstrap-osd.keyring
2016-11-07T20:24:02.180 INFO:teuthology.orchestra.run.vpm041.stderr:[ceph_deploy.gatherkeys][INFO ] Storing ceph.bootstrap-rgw.keyring
2016-11-07T20:24:02.180 INFO:teuthology.orchestra.run.vpm041.stderr:[ceph_deploy.gatherkeys][INFO ] Destroy temp directory /tmp/tmphABqKm
2016-11-07T20:24:02.207 INFO:teuthology.orchestra.run.vpm041:Running: 'cd /home/ubuntu/cephtest/ceph-deploy && ./ceph-deploy mds create vpm041'
So the issue is clearly no longer in ceph-deploy gather keys function.
What I did notice is that all tests where to do with encrypted OSD’s.
This led me to notice that this is related to the bug:
https://bugzilla.suse.com/show_bug.cgi?id=1008435
Which should have been raised upstream, but the bug owner was unsure if the work around he found, of installing the admin key on all encrypted OSD nodes was a reasonable expectation of deployment.
He has now raised the bug:
http://tracker.ceph.com/issues/17849
I suspect this is the route cause of the issue.
Since the patch:
https://github.com/ceph/ceph/pull/9345
No longer installs the admin keyring on the mon nodes, hence exposing the bug:
http://tracker.ceph.com/issues/17849
#13
Updated by Vasu Kulkarni about 6 years ago
- Subject changed from «failed during ceph-deploy cmd: mon create-initial , ec=1» in smoke to client.admin key is not created after mon create-intial
- Release set to kraken
#15
Updated by Vasu Kulkarni about 6 years ago
- Assignee set to Kefu Chai
- Priority changed from High to Urgent
Kefu, I am assigning this to you since its a monitor bootstrap issue, Its easy to recreate on kraken or master,
1) ceph-deploy install —dev=kraken node1
2) ceph-deploy new node1
3) ceph-deploy mon create-initial
and after the bootstrap notice that admin key is not created which is required for the rest of the process.
#17
Updated by Vasu Kulkarni about 6 years ago
Nathan, Thanks it is clearly related to PR https://github.com/ceph/ceph/pull/9345, ceph-create-keys is stripped out
looks like the ceph-deploy part wansn’t fixed at all, changes went in master and the ceph-deploy tested in jewel and there are others who are depending on the old behaviour
I am unable to understand the full logic behind the change, but looks like we need to call create-keys explicitly now
#19
Updated by Kefu Chai about 6 years ago
- Assignee deleted (Kefu Chai)
@vasu, un-assigning from myself. as Nathan put, mon should not be responsible for creating the admin key.
#20
Updated by Alfredo Deza almost 5 years ago
- Status changed from New to Closed
Closing this since it is no longer a problem. Feel free to re-open with full logs if it shows up again
Also available in: Atom
PDF
I have deployed 3 ceph mon nodes using juju and maas. From juju status all ceph mon nodes are up and fine. but i did ssh into one of the ceph node and was just trying to get ceph status. and its giving me this error,
ubuntu@CS1:/home/ubuntu# sudo ceph status
2013-09-02 11:01:32.157892 7f8fc3d65780 -1 monclient(hunting): ERROR: missing keyring, cannot use cephx for authentication
2013-09-02 11:01:32.157928 7f8fc3d65780 -1 ceph_tool_common_init failed.
And then i discovered for any ceph command its giving me same error.
Before ceph deployment in .yaml file i had sepecifed $fsid and $monitor-secret values. So i think juju should take care of keyring, but looks like it doesn’t. Any suggestion?
Jorge Castro
70k123 gold badges462 silver badges652 bronze badges
asked Sep 2, 2013 at 15:10
Looks like mistake from my side, while generating monitor secret, i didnt specified name parameter, so i regenerated monitor secrete with that parameter like this,
sudo ceph-authtool /dev/stdout --name=mon. --gen-key
And redeployed ceph mon and OSDs, but this time i also took care of capital letters.That information was also helpful James.Thx !
answered Sep 19, 2013 at 10:54
SaMSaM
6755 silver badges16 bronze badges
В серии статей «Big Ceph» важные концепции Ceph объясняются с помощью простейшего описания на понятном языке в сочетании с базовыми экспериментами. Дайте читателям четкое представление о распределенных системах хранения.
введение
Эта статья в основном знакомит с важной системой в Ceph — системой аутентификации CephX. Краткое введение в формат именования CephX. И представил роль CephX в ряде процессов от запуска кластера до подключения пользователя к кластеру. Наконец, с помощью экспериментальных операций объясните, как полностью восстановить все ключи в кластере, когда они утеряны, а также некоторые меры предосторожности при использовании CephX в реальной производственной среде.
Что такое CephX?
CephX очень прост для понимания, это имя пользователя / пароль всей системы Ceph, и этот пользователь создается не только путем ввода ceph -s в терминале.client, В этой системе аутентификации есть особая группа пользователей, то естьMON/OSD/MDSДругими словами, Monitor, OSD и MDS также требуют паролей учетных записей для входа в систему Ceph.
Правила именования CephX
Имя пользователя / пароль следует определенным правилам именования:
имя пользователя
Имя пользователя обычно следует<TYPE . ID>
Правила именования здесьTYPE
Есть три типа:mon
,osd
,client
. Идентификатор варьируется в зависимости от типа пользователей:
mon
:ID
длявоздух。osd
:ID
Для OSDID。client
:ID
Имя клиента, напримерadmin
,cinder
,nova
。* ПарольПароль обычно представляет собой строку из 40 символов, например:AQBh1XlZAAAAABAAcVaBh1p8w4Q3oaGoPW0R8w==
。
Пользователь по умолчанию
Для взаимодействия с кластером Ceph нам обычно нужно знать как минимум четыре части информации, и ни одна из них не является обязательной:
- ФСИД кластера.
- IP-адрес монитора кластера должен быть подключен к MON до получения информации о кластере.
- Один для входаимя пользователя。
- Соответствует зарегистрированному пользователюпароль. Фактически, многие студенты обнаружат, что нам не нужно указывать эти параметры, когда мы ежедневно взаимодействуем с кластером Ceph.
ceph -s
Получите статус кластера. Фактически, мы использовали несколько параметров по умолчанию, предоставляемых Ceph, иceph -s
Полное имя после добавления параметров по умолчанию:
ceph -s --conf /etc/ceph/ceph.conf --name client.admin --keyring /etc/ceph/ceph.client.admin.keyring
Как видно из приведенных выше инструкций, Ceph по умолчанию используетclient.admin, И ключевой файл пользователя обычно сохраняется в/etc/ceph/ceph.client.admin.keyring
Под дорожкой. Если здесь мы начнем с/etc/ceph
Удалите ключевой файл в каталоге и выполните сноваceph -s
, Вы получите наиболее частую ошибку ниже:
2017-07-28 15:56:03.271139 7f142579c700 -1 auth: unable to find a keyring on /etc/ceph/ceph.client.admin.keyring,/etc/ceph/ceph.keyring,/etc/ceph/keyring,/etc/ceph/keyring.bin: (2) No such file or directory
2017-07-28 15:56:03.271145 7f142579c700 -1 monclient(hunting): ERROR: missing keyring, cannot use cephx for authentication
2017-07-28 15:56:03.271146 7f142579c700 0 librados: client.admin initialization error (2) No such file or directory
Error connecting to cluster: ObjectNotFound
Из сообщения об ошибке видно одно, потому что мы используем пользователя по умолчаниюclient.admin
, Ceph будет искать следующие четыре пути по умолчаниюclient.admin
Пароль для этого пользователя: */etc/ceph/ceph.client.admin.keyring
: На самом деле формат именования:/etc/ceph/<$cluster>.<$type>.<$id>.keyring
。
/etc/ceph/ceph.keyring
: Формат имени:/etc/ceph/<$cluster>.keyring
。/etc/ceph/keyring
。/etc/ceph/keyring.bin
. Если эти четыре файла не существуют или в этих четырех файлах нет сохраненных пользователейclient.admin
, Тогда будет сообщено об ошибке:ERROR: missing keyring. Другими словами, пользовательclient.admin
Не удалось войти в систему Ceph!
Кто является создателем CephX?
Скрыть босса мон.
Разговор: client.admin: Конечно, это я! После входа в Ceph с паролем моей учетной записи вы можете выполнять любую команду! Mon .: Ой. client.admin: Ты кто? У меня есть все пароли учетных записей (спокойно проверьте список авторизации ceph), почему я не увидел вас? пн .: Да. client.admin: К сожалению, любой второй продукт удалил мой файл секретного ключа, я больше не могу подключиться к кластеру! пн .: Разрешите помочь вам найти секретный ключ. client.admin: ты? определить? пн .: Да.
Я всегда думал, что у меня большой авторитетclient.admin
, Я внезапно потерял доступ к кластеру, потому что я потерял ключевой файл, в котором сохранен пароль. И никогда не появлялсяmon.
Но утверждал, что может получитьclient.admin
Секретный ключ, можно ли сказатьmon.
Истинный создатель? !
Теперь вернемся к исходной отправной точке истории, которая является началом построения кластера, мы используемceph-deploy new NodeA NodeB NodeC
После этого были сгенерированы три файла:
ceph.conf
ceph.mon.keyring
ceph-deploy-ceph.log
Помимоceph.conf
, Иceph.mon.keyring
Файл. По крайней мере, этот файл почти никогда не будет использоваться в последующем взаимодействии с кластером, потому что вceph-deploy mon create-initial
После этого он сгенерируетclient.admin
Пользователь и последующее взаимодействие обычно будут использовать этого пользователя. Но первый пользователь, созданный кластером,<mon.>
, Соответствующий ключевой файл сохраняется в каталоге развертыванияceph.mon.keyring
。
Посмотреть ceph-deloy’sLOG, Вы можете увидеть на шагахceph-deploy mon create-initial
Когда есть следующая запись журнала:
[2017-07-28 16:49:53,468][centos7][INFO ] Running command: /usr/bin/ceph --connect-timeout=25 --cluster=ceph --admin-daemon=/var/run/ceph/ceph-mon.centos7.asok mon_status
[2017-07-28 16:49:53,557][centos7][INFO ] Running command: /usr/bin/ceph --connect-timeout=25 --cluster=ceph --name mon. --keyring=/var/lib/ceph/mon/ceph-centos7/keyring auth get client.admin
[2017-07-28 16:49:53,761][centos7][INFO ] Running command: /usr/bin/ceph --connect-timeout=25 --cluster=ceph --name mon. --keyring=/var/lib/ceph/mon/ceph-centos7/keyring auth get client.bootstrap-mds
[2017-07-28 16:49:54,046][centos7][INFO ] Running command: /usr/bin/ceph --connect-timeout=25 --cluster=ceph --name mon. --keyring=/var/lib/ceph/mon/ceph-centos7/keyring auth get client.bootstrap-mgr
[2017-07-28 16:49:54,255][centos7][INFO ] Running command: /usr/bin/ceph --connect-timeout=25 --cluster=ceph --name mon. --keyring=/var/lib/ceph/mon/ceph-centos7/keyring auth get-or-create client.bootstrap-mgr mon allow profile bootstrap-mgr
[2017-07-28 16:49:54,452][centos7][INFO ] Running command: /usr/bin/ceph --connect-timeout=25 --cluster=ceph --name mon. --keyring=/var/lib/ceph/mon/ceph-centos7/keyring auth get client.bootstrap-osd
[2017-07-28 16:49:54,658][centos7][INFO ] Running command: /usr/bin/ceph --connect-timeout=25 --cluster=ceph --name mon. --keyring=/var/lib/ceph/mon/ceph-centos7/keyring auth get client.bootstrap-rgw
Фактически, эти ключевые файлы передаются через пользователя.mon.
Создано, в том числеclient.admin
Пользователи и их секретные ключи. Итак, на протяжении всей истории CephX,mon.
Создан первый пользователь, а все остальные пользователиmon.
Генерируется пользователем или генерируется последовательно вниз.
Используйте картинку, чтобы показать отношения генерации ключей:
По этой картинке мы легко можем понятьbootstrap
Полезность нескольких пользователей состоит в том, чтобы направлять создание пользователей соответствующих типов пользователей, таких какbootstrap-osd
Используется для начальной загрузки всехosd.N
пользователь.
Сценарии использования CephX
После разговора о времени создания каждого пользователя давайте посмотрим, когда эти пользователи использовали свои учетные записи и пароли!
MON
Когда запускается весь кластер, сначала запускается Monitor, а затем запускается OSD. Когда Монитор запущен, Монитор будет содержать свой собственный файл ключа для запуска процесса. Другими словами, когда Монитор запущен, нет необходимости выполнять ключевую аутентификацию с каким-либо процессом. С точки зрения непрофессионала, даже если секретный ключ монитора был изменен Это не повлияет на запуск Monitor. Вот небольшой эксперимент для иллюстрации:
[[email protected] cluster]# cat /var/lib/ceph/mon/ceph-blog/keyring
[mon.]
key = AQAr1H1ZAAAAABAAWItgjm4dOKPJx+FX9lVk4Q==
caps mon = "allow *"
[[email protected] cluster]# ceph auth get mon.
exported keyring for mon.
[mon.]
key = AQAr1H1ZAAAAABAAWItgjm4dOKPJx+FX9lVk4Q==
caps mon = "allow *"
[[email protected] cluster]# vim /var/lib/ceph/mon/ceph-blog/keyring
##### Измените часть A содержимого файла секретного ключа на B, а затем перезапустите Monitor
[[email protected] cluster]# cat /var/lib/ceph/mon/ceph-blog/keyring
[mon.]
key = AQAr1H1ZBBBBBBAAWItgjm4dOKPJx+FX9lVk4Q==
caps mon = "allow *"
[[email protected] cluster]# systemctl restart ceph-mon.target
[[email protected] cluster]# ceph auth get mon.
exported keyring for mon.
[mon.]
key = AQAr1H1ZBBBBBBAAWItgjm4dOKPJx+FX9lVk4Q==
caps mon = "allow *"
В базе данных Monitor записываются все пароли пользователей, кроме mon. После запуска Monitor фактически запускается этап аутентификации. Все последующие пользователи, которые хотят подключиться к кластеру, должны сначала подключиться к Ceph через fsid и MON IP. После проверки подлинности кластера вы можете получить доступ к кластеру в обычном режиме.Далее будет продолжено представление процесса проверки подлинности при запуске OSD.
OSD
Когда экранное меню запускается, оно должно сначалаlog_to_monitors
, То есть войдите в кластер с паролем своей учетной записи.Этот пароль учетной записи записан в базе данных монитора, поэтому, если они совпадают, OSD можно запустить в обычном режиме, в противном случае будет выдана следующая ошибка:
2017-08-01 16:54:51.515541 7f21ea978800 -1 osd.0 30 log_to_monitors {default=true}
2017-08-01 16:54:51.991263 7f21ea978800 1 journal close /var/lib/ceph/osd/ceph-0/journal
2017-08-01 16:54:51.999674 7f21ea978800 -1 ^[[0;31m ** ERROR: osd init failed: (1) Operation not permitted^[[0m
2017-08-01 16:54:52.006620 7f21ea978800 -1 common/HeartbeatMap.cc: In function 'ceph::HeartbeatMap::~HeartbeatMap()' thread 7f21ea978800 time 2017-08-01 16:54:52.001569
common/HeartbeatMap.cc: 44: FAILED assert(m_workers.empty())
В журналеOperation not permitted
Это означает, что аутентификация не удалась, что указывает на то, что файл секретного ключа, передаваемый osd.0, несовместим с содержимым, записанным монитором, что вызывает сбой запуска OSD. На этом этапе вам необходимо проверить, соответствует ли содержимое секретного ключа osd.0 содержимому ключа Monitor:
[[email protected] ~]# cat /var/lib/ceph/osd/ceph-0/keyring
[osd.0]
key = AQA81H5Zh05jDxAAkvaHBs07K9HYF1uGSPh+rA==
[[email protected] ~]# ceph auth get osd.0
exported keyring for osd.0
[osd.0]
key = AQBH1H5Z6pBvDhAAul364EZsRjDy/NqTQh07Yw==
caps mon = "allow profile osd"
caps osd = "allow *"
На самом деле, содержимое отличается.В это время замените ключевую часть связки ключей файла ключей значением ключа, полученным с помощью ceph auth get osd.0, чтобы нормально запустить OSD.
Client
Обычно мы выполняемceph -s
В настоящее время это эквивалентно открытию клиента для подключения к кластеру Ceph. По умолчанию этот клиент использует пароль учетной записи client.admin для входа в систему и подключения к кластеру, поэтому обычное выполнениеceph -s
Эквивалентно выполненномуceph -s --name client.admin --keyring /etc/ceph/ceph.client.admin.keyring
. Следует отметить, что каждый раз, когда мы выполняем команду Ceph в командной строке, это эквивалентно открытию клиента, взаимодействию с кластером и последующему закрытию клиента. Теперь приведем очень распространенную ошибку, с которой легко столкнуться, если вы новичок в Ceph:
[[email protected] ~]# ceph -s
2017-08-03 02:22:27.352516 7fbd157b7700 0 librados: client.admin authentication error (1) Operation not permitted
Error connecting to cluster: PermissionError
Сообщение об ошибке легко понять, операция не разрешена, то есть аутентификация не пройдена, потому что здесь мы используем значение по умолчаниюclient.admin
Пользователь и его секретный ключ, указывающий, что содержимое секретного ключа несовместимо с записью кластера Ceph, что означает/etc/ceph/ceph.client.admin.keyring
Возможно, содержимое оставлено предыдущим кластером или записан неверный секретный ключ. В настоящее время просто используйтеmon.
Пользователь для выполненияceph auth list
Вы можете просмотреть правильное ключевое содержание:
[[email protected] ~]# ceph auth get client.admin --name mon. --keyring /var/lib/ceph/mon/ceph-blog/keyring
exported keyring for client.admin
[client.admin]
key = AQD7F4JZIs9DJxAAZms/NQQQ1YhUpCHRtjygJA==
caps mds = "allow *"
caps mon = "allow *"
caps osd = "allow *"
Разработайте шапки
Пристальный взгляд ceph auth list
Помимо имени пользователя и соответствующего содержимого секретного ключа, есть такжеcaps
Содержание в начале, это разбивка разрешений каждого пользователя в CephX, таких как: чтение, запись, выполнение и т. Д .:
caps mds = "allow *"
caps mon = "allow *"
caps osd = "allow *"
Для разных приложений (mds / mon / osd) одно и то же разрешение на чтение или запись имеет разные эффекты. Ниже приводится анализ разрешений r / w / x этих трех приложений.
MON
r разрешение
Тогда возникает проблема, хочу выполнитьceph -s
Каков минимальный авторитет? То есть caps mon ="allow r"
, Что является полномочием MON. Итак, что именно читает это разрешение на чтение? Первое, что следует подчеркнуть, это то, что считываемые здесь данные поступают из MON и не имеют ничего общего с OSD.
В качестве государственного обслуживающего персонала кластера база данных MON(/var/lib/ceph/mon/ceph-$hostname/store.db
) Содержит серию кластерных карт (Cluster Map), эти карты включают, но не ограничиваются:
- CRUSH Map
- OSD Map
- MON Map
- MDS Map
- PG Map и разрешение на чтение здесь — это разрешение на чтение этих карт, но реальное содержимое этих карт не имеет особого смысла для чтения, поэтому оно отображается в более удобной форме вывода команд, и эти команды включают, но не ограничиваются:
ceph -s ceph osd crush dump ceph osd tree ceph pg dump ceph osd dump
Пока у вас есть ПНr Разрешение, тогда вы можете читать все данные карты, поддерживаемые MON, из кластера.С точки зрения макроса вы можете читать информацию о состоянии кластера (но не можете ее изменять).
Вот краткое введение в процесс проверки, мы генерируем только MONr Секретный ключ разрешения на доступ к кластеру:
ceph auth get-or-create client.mon_r mon 'allow r' >> /root/key
ceph --name client.mon_r --keyring /root/key -s ## OK
ceph --name client.mon_r --keyring /root/key osd dump ## OK
ceph --name client.mon_r --keyring /root/key pg dump ## OK
ceph --name client.mon_r --keyring /root/key osd out 0 ## Error EACCES: access denied
ceph --name client.mon_r --keyring /root/key osd set noout ## Error EACCES: access denied
w разрешения
w Разрешения интереснее и надо сотрудничатьr Разрешение может быть эффективным, в противном случае само по себеw Когда орган выполняет команду, он всегдаaccess denied
оф. Итак, мы тестируемw При разрешении нужно прикрепитьr Разрешения:
ceph auth get-or-create client.mon_rw mon 'allow rw' >> /root/key
В это время каждая карта фантомного кластера находится перед вами, и вы можете четко прочитать статус каждого OSD и статус каждого PG. Однако, если вам даноw После разрешения вы можете выполнять операции с этими объектами, например запускать экранное меню (ceph osd rm
), отремонтировать ГУ (ceph pg repair
), модифицируйте структуру CRUSH (ceph osd setcrushmap
), удалите MON (ceph mon rm
), и эти операции, если толькоr Он не может быть выполнен с разрешения (access denied
)。
Поскольку здесь можно выполнить слишком много инструкций, я простоr, wПростая сводка разрешений:
- r: считывание состояния каждого компонента (MON / OSD / MDS / CRUSH / PG) кластера, но его нельзя изменить.
- rw: читать и изменять статус каждого компонента кластера и выполнять каждый компонентИнструкция по действию. Примечание: разрешения на чтение и запись компонентов, обсуждаемых в настоящее время, не включают разрешения на чтение и запись объектов кластера.То есть у вас есть только разрешение rw MON, и вы не можете читать и записывать объекты из кластера.
x разрешения
Разрешение MON x также более интересно, потому что это разрешение только иauth
Связанный. То есть, если вы хотите выполнитьceph auth list
,ceph auth get
Как все иauth
Связанные инструкции, тогда естьx Разрешения могут быть выполнены. Но иw Аналогичные разрешения, но тоже нужныr Комбинация разрешений может быть эффективной:
ceph auth get-or-create client.mon_rx mon 'allow rx' >> /root/key
ceph --name client.mon_rw --keyring /root/key auth list
* Разрешение
Описание одним предложением:* = rwx
Советы могут записывать несколько секретных ключей пользователя в один файл, например, как указано выше.
/root/key
, Содержит:<pre class="lang_">
[root @ blog ~] # cat /root/key[client.mon_r visiblekey=AQBtLIJZScuLARAAPQS9ahvU1oZh1Ha/fYhUhQ==[client.mon_whibitedkey = AQD5LYJZJO2 / AxAAWgbuPPUNJ0ugxsqd=D …--name
Позже приедет Цеф--keyring
Найдите секретный ключ в соответствующем разделе имени пользователя в следующем файле.
разрешения OSD профиля
Официальное объяснение: дайте пользователямИдентификация OSD Разрешение на подключение к другим OSD / MON. Предоставьте это разрешение экранному меню, чтобы экранное меню могло обрабатывать контрольные сигналы копирования и отчет о состоянии. Я пока не нашел более популярного понимания ~
OSD
По сравнению с различными разрешениями MON, rw OSD легче понять. Разрешение r — это разрешение на чтение объекта.w Разрешение — это разрешение на запись объекта,x Разрешения более интересны, вы можете вызывать любые разрешения на чтение / запись класса, указанные здесьCeph CookBook Представлятьclass-read/class-write
:
Ceph can be extended by creating shared object classes called Ceph Classes. Ceph can load .so classes stored in the OSD class dir.For a class ,you can create new object methods that have the ability to call native methods in Ceph object store ,for example , the objects that you have defined in your class can call native Ceph methods such as read and write.
Например, вы можете реализовать некоторые пользовательские методы. Вызывая эти методы, вы можете читать и записывать объекты, которые имеют определенные характеристики, например, объекты, начинающиеся с rbd_data. В настоящее время метод настраиваемого класса можно использовать только путем вызова уровня librados, в то время как верхние RBD и RGW не могут использоваться.
- В дополнение к rwx разрешения также включают
ceph tell osd.*
Авторитет таких админ-команд.
Эта страница официального сайта (http://docs.ceph.com/docs/kraken/man/8/ceph-authtool/) — хорошее введение в несколько примеров, вот краткое введение в значение следующей более длинной инструкции:
osd = "allow class-read object_prefix rbd_children, allow pool templates r class-read, allow pool vms rwx"
Первое разрешение:object_prefix
Это метод класса, и роль этого метода состоит в том, чтобы дать всемrbd_children
Для объектов, начинающихся с названияclass-read
То есть разрешения на чтение. Могу только читать, но не писать.
Второе разрешение: в бассейнtemplates
Разрешение на чтение может выполнять метод чтения класса. Другими словами, помимо чтения объектов этого пула, покупатели также могут сами реализовать форму.obejct_prefix
Такая система поставляется с методами класса для чтения объектов, например для чтения объектов с определенными характеристиками.
Третье разрешение: в бассейнvms
Разрешение на чтение и запись и выполнение методов чтения / записи класса.
Процесс восстановления утерянных всех ключей
После разговора о таком большом объеме теоретических знаний некий одноклассник Вэй Вэй из Второго грузового транспорта стал нетерпеливым и сразу удалил все секретные ключи. Эти секретные ключи содержали:
- MON : /var/lib/ceph/mon/ceph-hostname/keyring
- OSD : /var/lib/ceph/osd/ceph-0/keyring
- Клиент: /etc/ceph/ceph.client.admin.keyring Короче говоря, все файлы, содержащие содержимое секретного ключа, были удалены, и вместе с
/etc/ceph/
Каталоги были удалены чисто. Можно ли сейчас восстановить все ключевые файлы? Ответ: да!
Что касается управления секретными ключами, Ceph сделал более интересную настройку: все, кромеmon.
Учетная запись и пароль пользователя хранятся в базе данных MON leveldb, ноmon.
Информация о пользователе не сохраняется в базе данных, а считывается из каталога MON при запуске MON.keyring
Файл. Итак, мы можем даже подделатьkeyring
, Поместите его в каталог MON. Затем выполните синхронизацию с каждым узлом MON, а затем перезапустите три MON. В настоящее время МОН проводит искусственныеkeyring
Запуск вступил в силу. С паролем учетной записи обычного пользователя мы можем легко использоватьceph auth list --name mon. --keyring /var/lib/ceph/mon/ceph-$hostname/keyring
Команда, чтобы получить все содержимое секретного ключа!
Подождите, если он удален/etc/ceph/
Каталог, указанная выше команда не может быть выполнена, потому что нет/etc/ceph/ceph.conf
Чтобы указать кластер, в это время мы можем выбрать из любого каталога OSD/var/lib/ceph/osd/ceph-0/ceph_fsid
Получите fsid кластера, и IP-информацию MON можно легко восстановить. Простой рефакторингceph.conf
После использованияmon.
Пароль пользователя может быть правильнымceph auth list
Информация ~.
Подожди, сейчасceph.conf
Контент слишком оптимизирован, и в нем намного меньше материала, чем до его удаления. Можно ли это восстановить? Ответ положительный!
Найдите любое OSD, которое не было перезапущено, и выполнитеceph daemon osd.0 config diff
Таким образом, вы можете увидеть разницу между элементами конфигурации, загружаемыми при запуске OSD, и элементами конфигурации по умолчанию, а также легко восстановить файл конфигурации перед его удалением путем тщательного сравнения.
Вопрос: Я думаю, у некоторых студентов возникнут вопросы, почему бы напрямую не изменить cephx в ceph.conf на none и перезапустить кластер напрямую. Во-первых, стоимость этого выше, потому что OSD необходимо перезапустить (OSD необходимо перезапустить, иначе OSD Все совершат самоубийство в течение периода перезапуска MON). Следовательно, описанный выше метод только перезапускает MON и имеет небольшое влияние.
Меры предосторожности при фактическом использовании CephX
использование zabbix
После развертывания zabbix-agent сервер получает возвращаемое значение, вытягивая выходные данные команды агента, но он сообщит:
zabbix_get -s 1.2.3.4 -k ceph.ops
ZBX_NOTSUPPORTED: Unsupported item key
Перейдите в узел агента, чтобы выполнить сценарий, но вы можете получить нормальный вывод.
Просмотрите ЖУРНАЛ zabbix_agent здесь и обнаружите, что журнал всегда сообщает:
librados: client.admin authentication error (1) Operation not permitted
Оказывается, zabbix_agent прав/etc/ceph/ceph.client.admin.keyring
Нет разрешения на чтение, секретный ключchmod a+r
После этого данные можно будет прочитать в обычном режиме.
Поэтому в повседневном использовании мы должны обращать внимание/etc/ceph/ceph.client.admin.keyring
Если многие приложения, запущенные не под пользователем root, не могут прочитать содержимое секретного ключа, они не смогут подключиться к кластеру, что вызовет странное явление.
cephx -> none
При отключении функций CephX следуйте определенной последовательности:
- Закрыть: перезапустить MON -> перезапустить OSD
- Включите: Restart MON -> Restart OSD. Если OSD не перезапускается после закрытия CephX, OSD случайным образом зависает через некоторое время.
Раздача брелока
Обычно мы можем выполнить это на узле MONceph -s
, Но когда дело доходит до узла OSD, он будет отсутствоватьclient.admin
Невозможно выполнитьceph -s
。
Путь хранения секретного ключа MON:/var/lib/ceph/mon/ceph-$hostname/keyring
. Путь хранения ключа OSD:/var/lib/ceph/osd/ceph-$osd_id/keyring
. Путь хранения секретного ключа client.admin:/etc/ceph/ceph.client.admin.keyring
。
Фактически, мы даже можем выполнить на узле OSD (без client.admin.keyring):
ceph -s --name osd.0 --keyring /var/lib/ceph/osd/ceph-0/keyring
Чтобы прочитать статус кластера.
Настройте разрешения пользователей, которые могут получить доступ только к одному RBD
Для конкретного введения, пожалуйста, обратитесь к этой статье (https://blog-fromsomedude.rhcloud.com/2016/04/26/Allowing-a-RBD-client-to-map-only-one-RBD/Здесь мы в основном говорим о значении инструкции по созданию ключа:
ceph auth get-or-create client.myclient
mon
'allow r'
osd
'allow rwx object_prefix rbd_data.103d2ae8944a;
allow rwx object_prefix rbd_header.103d2ae8944a;
allow rx object_prefix rbd_id.myimage'
-o /etc/ceph/ceph.client.myclient.keyring
Пройти здесьobject_prefix
Метод префикса дает пользователям права на чтение и запись для всех объектов, связанных с определенным RBD, что является практическим приложением.
подводить итоги
В этой статье представлен процесс генерации CephX в системе Ceph и генерация зависимостей между ними. Подробно описаны роль и сценарии использования каждого разрешения в разных приложениях. Наконец, теория применяется к реальной производственной среде на примере потерянного ключа, так что каждый может легко использовать CephX.
Hi,Jesus
I encountered similar problem.
1. shut down one of nodes, but all osds can’t reactive on the node after reboot.
2. run service ceph restart manually, got the same error message:
[root@storage4 ~]# /etc/init.d/ceph start
=== osd.15 ===
2015-03-23 14:43:32.399811 7fed0fcf4700 -1 monclient(hunting): ERROR: missing keyring, cannot use cephx for authentication
2015-03-23 14:43:32.399814 7fed0fcf4700 0 librados: osd.15 initialization error (2) No such file or directory
Error connecting to cluster: ObjectNotFound
failed: ‘timeout 30 /usr/bin/ceph -c /etc/ceph/ceph.conf —name=osd.15 —keyring=/var/lib/ceph/osd/ceph-15/keyring osd crush create-or-move — 15 0.19 host=storage4 root=default’
……
3. ll /var/lib/ceph/osd/ceph-15/
total 0
all files disappeared in the /var/lib/ceph/osd/ceph-15/
Date: 2015-03-24 05:09
Subject: ERROR: missing keyring, cannot use cephx for authentication
Hi all, I did HA failover test shutting down 1 node and I see that only 1 OSD came up after reboot:
[root@geminis ceph]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rhel-root 50G 4.5G 46G 9% /
devtmpfs 126G 0 126G 0% /dev
tmpfs 126G 80K 126G 1% /dev/shm
tmpfs 126G 9.9M 126G 1% /run
tmpfs 126G 0 126G 0% /sys/fs/cgroup
/dev/sda1 494M 165M 330M 34% /boot
/dev/mapper/rhel-home 36G 44M 36G 1% /home
/dev/sdc1 3.7T 134M 3.7T 1% /var/lib/ceph/osd/ceph-14
If I run service ceph restart I got this error message…
Stopping Ceph osd.94 on geminis…done
=== osd.94 ===
2015-03-23 15:05:41.632505 7fe7b9941700 -1 monclient(hunting): ERROR: missing keyring, cannot use cephx for authentication
2015-03-23 15:05:41.632508 7fe7b9941700 0 librados: osd.94 initialization error (2) No such file or directory
Error connecting to cluster: ObjectNotFound
failed: ‘timeout 30 /usr/bin/ceph -c /etc/ceph/ceph.conf —name=osd.94 —keyring=/var/lib/ceph/osd/ceph-94/keyring osd crush create-or-move — 94 0.05 host=geminis root=default
I have ceph.conf and ceph.client.admin.keyring under /etc/ceph:
[root@geminis ceph]# ls /etc/ceph
ceph.client.admin.keyring ceph.conf rbdmap tmp1OqNFi tmptQ0a1P
[root@geminis ceph]#
does anybody know what could be wrong?
Thanks
This email may contain confidential and privileged material for the sole use of the intended recipient. Any review, use, distribution or disclosure by others
is strictly prohibited. If you are not the intended recipient (or authorized to receive for the recipient), please contact the sender by reply email and delete all copies of this message.Please click
here for Company Registration Information.
_______________________________________________ ceph-users mailing list ceph-users@xxxxxxxxxxxxxx http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
Ceph is free and open source distributed storage solution through which we can easily provide and manage block storage, object storage and file storage. Ceph storage solution can be used in traditional IT infrastructure for providing the centralize storage, apart from this it also used in private cloud (OpenStack & Cloudstack). In Red Hat OpenStack Ceph is used as cinder backend.
In this article, we will demonstrate how to install and configure Ceph Cluster(Mimic) on CentOS 7 Servers.
In Ceph Cluster following are the major components:
- Monitors (ceph-mon) : As the name suggests a ceph monitor nodes keep an eye on cluster state, OSD Map and Crush map
- OSD ( Ceph-osd): These are the nodes which are part of cluster and provides data store, data replication and recovery functionalities. OSD also provides information to monitor nodes.
- MDS (Ceph-mds) : It is a ceph meta-data server and stores the meta data of ceph file systems like block storage.
- Ceph Deployment Node : It is used to deploy the Ceph cluster, it is also called as Ceph-admin or Ceph-utility node.
My Lab setup details :
- Ceph Deployment Node: (Minimal CentOS 7, RAM: 4 GB, vCPU: 2, IP: 192.168.1.30, Hostname: ceph-controller)
- OSD or Ceph Compute 1: (Minimal CentOS 7, RAM: 10 GB, vCPU: 4, IP: 192.168.1.31, Hostname: ceph-compute01)
- OSD or Ceph Compute 2: (Minimal CentOS 7, RAM: 10 GB, vCPU: 4, IP: 192.168.1.32, Hostname: ceph-compute02)
- Ceph Monitor: (Minimal CentOS 7, RAM: 10 GB, vCPU: 4, IP: 192.168.1.33, Hostname: ceph-monitor)
Note: In all the nodes we have attached two nics (eth0 & eth1), on eth0 IP from the VLAN 192.168.1.0/24 is assigned . On eth1 IP from VLAN 192.168.122.0/24 is assigned and will provide the internet access.
Let’s Jump into the installation and configuration steps:
Step:1) Update /etc/hosts file, NTP, Create User & Disable SELinux on all Nodes
Add the following lines in /etc/hosts file of all the nodes so that one can access these nodes via their hostname as well.
192.168.1.30 ceph-controller 192.168.1.31 ceph-compute01 192.168.1.32 ceph-compute02 192.168.1.33 ceph-monitor
Configure all the Ceph nodes with NTP Server so that all nodes have same time and there is no drift in time,
~]# yum install ntp ntpdate ntp-doc -y ~]# ntpdate europe.pool.ntp.org ~]# systemctl start ntpd ~]# systemctl enable ntpd
Create a user with name “cephadm” on all the nodes and we will be using this user for ceph deployment and configuration
~]# useradd cephadm && echo "[email protected]#" | passwd --stdin cephadm
Now assign admin rights to user cephadm via sudo, execute the following commands,
~]# echo "cephadm ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephadm ~]# chmod 0440 /etc/sudoers.d/cephadm
Disable SELinux on all the nodes using beneath sed command, even ceph official site recommends to disable SELinux ,
~]# sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
Reboot all the nodes now using beneath command,
~]# reboot
Step:2 Configure Passwordless authentication from Ceph admin to all OSD and monitor nodes
From Ceph-admin node we will use the utility known as “ceph-deploy“, it will login to each ceph node and will install ceph package and will do all the required configurations. While accessing the Ceph node it will not prompt us to enter the credentials of ceph nodes that’s why we required to configure passwordless or keys-based authentication from ceph-admin node to all ceph nodes.
Run the following commands as cephadm user from Ceph-admin node (ceph-controller). Leave the passphrase as empty.
[[email protected] ~]$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/cephadm/.ssh/id_rsa): Created directory '/home/cephadm/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/cephadm/.ssh/id_rsa. Your public key has been saved in /home/cephadm/.ssh/id_rsa.pub. The key fingerprint is: 93:01:16:8a:67:34:2d:04:17:20:94:ad:0a:58:4f:8a [email protected] The key's randomart image is: +--[ RSA 2048]----+ |o.=+*o+. | | o.=o+.. | |.oo++. . | |E..o. o | |o S | |. . | | | | | | | +-----------------+ [[email protected] ~]$
Now copy the keys to all the ceph nodes using ssh-copy-id command
[[email protected] ~]$ ssh-copy-id [email protected] [[email protected] ~]$ ssh-copy-id [email protected] [[email protected] ~]$ ssh-copy-id [email protected]
It recommended to add the following in the file “~/.ssh/config”
[[email protected] ~]$ vi ~/.ssh/config Host ceph-compute01 Hostname ceph-compute01 User cephadm Host ceph-compute02 Hostname ceph-compute02 User cephadm Host ceph-monitor Hostname ceph-monitor User cephadm
Save and exit the file.
[email protected] ~]$ chmod 644 ~/.ssh/config [[email protected] ~]$
Note: In the above command replace the user name and host name that suits to your setup.
Step:3) Configure firewall rules for OSD and monitor nodes
In case OS firewall is enabled and running on all ceph nodes then we need to configure the below firewall rules else you can skip this step.
On Ceph-admin node, configure the following firewall rules using beneath commands,
[[email protected] ~]$ sudo firewall-cmd --zone=public --add-port=80/tcp --permanent success [[email protected] ~]$ sudo firewall-cmd --zone=public --add-port=2003/tcp --permanent success [[email protected] ~]$ sudo firewall-cmd --zone=public --add-port=4505-4506/tcp --permanent success [[email protected] ~]$ sudo firewall-cmd --reload success [[email protected] ~]$
Login the OSD or Ceph Compute Nodes and configure the firewall rules using firewall-cmd command,
[[email protected] ~]$ sudo firewall-cmd --zone=public --add-port=6800-7300/tcp --permanent success [[email protected] ~]$ sudo firewall-cmd --reload success [[email protected] ~]$ [[email protected] ~]$ sudo firewall-cmd --zone=public --add-port=6800-7300/tcp --permanent success [[email protected] ~]$ sudo firewall-cmd --reload success [[email protected] ~]$
Login to Ceph Monitor node and execute the firewalld command to configure firewall rules,
[[email protected] ~]$ sudo firewall-cmd --zone=public --add-port=6789/tcp --permanent success [[email protected] ~]$ sudo firewall-cmd --reload success [[email protected] ~]$
Step:4) Install and Configure Ceph Cluster from Ceph Admin node
Login to your Ceph-admin node as a “cephadm” user and enable the latest version of Ceph yum repository. At time of writing this article, Mimic is latest version of Ceph,
[[email protected] ~]$ sudo rpm -Uvh https://download.ceph.com/rpm-mimic/el7/noarch/ceph-release-1-1.el7.noarch.rpm
Enable EPEL repository as well,
[[email protected] ~]$ sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
Install the Ceph-deploy utility using the following yum command,
[[email protected] ~]$ sudo yum update -y && sudo yum install ceph-deploy python2-pip -y
Create a directory with name “ceph_cluster“, this directory will have all Cluster configurations
[[email protected] ~]$ mkdir ceph_cluster [[email protected] ~]$ cd ceph_cluster/ [[email protected] ceph_cluster]$
Now generate the cluster configuration by executing the ceph-deploy utility on ceph-admin node, we are registering ceph-monitor node as monitor node in ceph cluster. Ceph-deploy utility will also generate “ceph.conf” in the current working directory.
[[email protected] ceph_cluster]$ ceph-deploy new ceph-monitor
Output of above command would be something like below:
Update Network address (public network) under the global directive in ceph.conf file, Here Public network is the network on which Ceph nodes will communicate with each other and external client will also use this network to access the ceph storage,
[[email protected] ceph_cluster]$ vi ceph.conf [global] fsid = b1e269f0-03ea-4545-8ffd-4e0f79350900 mon_initial_members = ceph-monitor mon_host = 192.168.1.33 auth_cluster_required = cephx auth_service_required = cephx auth_client_required = cephx public network = 192.168.1.0/24
Save and exit the file.
Now Install ceph on all the nodes from the ceph-admin node, run the “ceph-deploy install” command
[[email protected] ~]$ ceph-deploy install ceph-controller ceph-compute01 ceph-compute02 ceph-monitor
Above command will install ceph along with other dependencies automatically on all the nodes, it might take some time depending on the internet speed on ceph nodes.
Output of above “ceph-deploy install” command output would be something like below:
Execute “ceph-deploy mon create-initial” command from ceph-admin node, it will deploy the initial monitors and gather the keys.
[[email protected] ~]$ cd ceph_cluster/ [[email protected] ceph_cluster]$ ceph-deploy mon create-initial
Execute “ceph-deploy admin” command to copy the configuration file from ceph-admin node to all ceph nodes so that one can use ceph cli command without specifying the monitor address.
[[email protected] ceph_cluster]$ ceph-deploy admin ceph-controller ceph-compute01 ceph-compute02 ceph-monitor
Install the Manager daemon from Ceph-admin node on Ceph Compute Nodes (OSD) using the following command
[[email protected] ceph_cluster]$ ceph-deploy mgr create ceph-compute01 ceph-compute02
Step:5) Add OSD disks to Cluster
In my setup I have attached two disks /dev/vdb & /dev/vdc on both the compute nodes, I will use these four disks from compute nodes as OSD disk.
Let’s verify whether ceph-deploy utility can see these disks or not. Run the “ceph-deploy disk list” command from ceph-admin node,
[[email protected] ceph_cluster]$ ceph-deploy disk list ceph-compute01 ceph-compute02
Output of above command:
Note: Make sure these disks are not used anywhere and does not contain any data
To clean up and delete data from disks use the following commands,
[[email protected] ceph_cluster]$ ceph-deploy disk zap ceph-compute01 /dev/vdb [[email protected] ceph_cluster]$ ceph-deploy disk zap ceph-compute01 /dev/vdc [[email protected] ceph_cluster]$ ceph-deploy disk zap ceph-compute02 /dev/vdb [[email protected] ceph_cluster]$ ceph-deploy disk zap ceph-compute02 /dev/vdc
Now Mark these disks as OSD using the following commands
[[email protected] ceph_cluster]$ ceph-deploy osd create --data /dev/vdb ceph-compute01 [[email protected] ceph_cluster]$ ceph-deploy osd create --data /dev/vdc ceph-compute01 [[email protected] ceph_cluster]$ ceph-deploy osd create --data /dev/vdb ceph-compute02 [[email protected] ceph_cluster]$ ceph-deploy osd create --data /dev/vdc ceph-compute02
Step:6) Verify the Ceph Cluster Status
Verify your Ceph cluster status using “ceph health” & “ceph -s“, run these commands from monitor node
[[email protected] ~]# ceph health HEALTH_OK [[email protected] ~]# [[email protected] ~]# ceph -s cluster: id: 4f41600b-1c5a-4628-a0fc-2d8e7c091aa7 health: HEALTH_OK services: mon: 1 daemons, quorum ceph-monitor mgr: ceph-compute01(active), standbys: ceph-compute02 osd: 4 osds: 4 up, 4 in data: pools: 0 pools, 0 pgs objects: 0 objects, 0 B usage: 4.0 GiB used, 76 GiB / 80 GiB avail pgs: [[email protected] ~]#
As we can see in above output that health of ceph cluster is OK and we have 4 OSDs , all of these OSDs are up and active, apart from this we can see that have 80 GB disk space available in our cluster.
This Confirm that we have successfully installed and configured Ceph Cluster on CentOS 7 System, if these steps help you to install ceph in your environment then please do share your feedback and comments.
In the coming article we will discuss how to assign block storage from Ceph cluster to the clients and will see how client can access the block storage.