[pve-devel] [PATCH manager 09/14] ceph: mon create: add to mon_host with msgr2
Dominik Csapak
d.csapak at proxmox.com
Tue Jun 18 15:42:53 CEST 2019
in nautilus, the default msgr protocol is v2, but it has to be
explicitely given to monmaptool, also we don't want to use the
monitor sections anymore so only update mon_host
ceph can cope with mixed mon_host and monitor sections, so this is
not a problem
also the ceph-create-keys part is not necessary anymore since
this is done by the monitor itself now
Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
---
PVE/API2/Ceph/MON.pm | 38 ++++++++++++++++----------------------
1 file changed, 16 insertions(+), 22 deletions(-)
diff --git a/PVE/API2/Ceph/MON.pm b/PVE/API2/Ceph/MON.pm
index a0980886..6cba7f8e 100644
--- a/PVE/API2/Ceph/MON.pm
+++ b/PVE/API2/Ceph/MON.pm
@@ -191,9 +191,6 @@ __PACKAGE__->register_method ({
my $monsection = "mon.$monid";
my $ip = $find_mon_ip->($cfg, $rados, $param->{node}, $param->{'mon-address'});
- my $monaddr = Net::IP::ip_is_ipv6($ip) ? "[$ip]:6789" : "$ip:6789";
- my $monname = $param->{node};
-
$assert_mon_prerequisites->($cfg, $monhash, $monid, $ip);
my $worker = sub {
@@ -224,10 +221,15 @@ __PACKAGE__->register_method ({
my $mapdata = $rados->mon_command({ prefix => 'mon getmap', format => 'plain' });
file_set_contents($monmap, $mapdata);
} else {
- run_command("monmaptool --create --clobber --add $monid $monaddr --print $monmap");
+ my $monaddr = $ip;
+ if (Net::IP::ip_is_ipv6($ip)) {
+ $monaddr = "[$ip]";
+ $cfg->{global}->{ms_bind_ipv6} = 'true';
+ }
+ run_command("monmaptool --create --clobber --addv $monid '[v2:$monaddr:3300,v1:$monaddr:6789]' --print $monmap");
}
- run_command("ceph-mon --mkfs -i $monid --monmap $monmap --keyring $mon_keyring");
+ run_command("ceph-mon --mkfs -i $monid --monmap $monmap --keyring $mon_keyring --public-addr $ip");
run_command("chown ceph:ceph -R $mondir");
};
my $err = $@;
@@ -237,26 +239,18 @@ __PACKAGE__->register_method ({
die $err;
}
- $cfg->{$monsection} = {
- 'host' => $monname,
- 'mon addr' => $monaddr,
- };
+ # update ceph.conf
+ my $monhost = $cfg->{global}->{mon_host} // "";
+ $monhost .= " $ip";
+ $cfg->{global}->{mon_host} = $monhost;
cfs_write_file('ceph.conf', $cfg);
- my $create_keys_pid = fork();
- if (!defined($create_keys_pid)) {
- die "Could not spawn ceph-create-keys to create bootstrap keys\n";
- } elsif ($create_keys_pid == 0) {
- exit PVE::Tools::run_command(['ceph-create-keys', '-i', $monid]);
- } else {
- PVE::Ceph::Services::ceph_service_cmd('start', $monsection);
-
- # to ensure we have the correct startup order.
- eval { PVE::Ceph::Services::ceph_service_cmd('enable', $monsection) };
- warn "Enable ceph-mon\@${monid}.service failed, do manually: $@\n" if $@;
- waitpid($create_keys_pid, 0);
- }
+ PVE::Ceph::Services::ceph_service_cmd('start', $monsection);
+
+ eval { PVE::Ceph::Services::ceph_service_cmd('enable', $monsection) };
+ warn "Enable ceph-mon\@${monid}.service failed, do manually: $@\n" if $@;
+
PVE::Ceph::Services::broadcast_ceph_services();
};
--
2.11.0
More information about the pve-devel
mailing list