169 lines
3.3 KiB
Markdown
169 lines
3.3 KiB
Markdown
|
|
# Fix R630-01 Monitor Quorum Issue
|
||
|
|
|
||
|
|
## Problem
|
||
|
|
R630-01 monitor is not joining the quorum. Only ml110-01 is in quorum.
|
||
|
|
|
||
|
|
## Diagnosis
|
||
|
|
|
||
|
|
From your terminal output:
|
||
|
|
- Quorum only shows: `["ml110-01"]`
|
||
|
|
- Monmap only has: `ml110-01` monitor
|
||
|
|
- R630-01 monitor is not in the cluster
|
||
|
|
|
||
|
|
## Solution Steps
|
||
|
|
|
||
|
|
### Step 1: Check R630-01 Monitor Status
|
||
|
|
|
||
|
|
On **r630-01**:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
systemctl status ceph-mon@r630-01
|
||
|
|
journalctl -u ceph-mon@r630-01 -n 50
|
||
|
|
ls -la /var/lib/ceph/mon/ceph-r630-01/
|
||
|
|
```
|
||
|
|
|
||
|
|
### Step 2: Check if Monitor Directory Exists
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# If directory is missing or empty, create it
|
||
|
|
ls -la /var/lib/ceph/mon/ceph-r630-01/
|
||
|
|
```
|
||
|
|
|
||
|
|
### Step 3: Add R630-01 to Monmap
|
||
|
|
|
||
|
|
On **ml110-01** (where quorum exists):
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Get current monmap
|
||
|
|
ceph mon getmap -o /tmp/monmap
|
||
|
|
|
||
|
|
# Check if r630-01 is in monmap
|
||
|
|
monmaptool --print /tmp/monmap | grep r630-01
|
||
|
|
|
||
|
|
# If not present, add it manually
|
||
|
|
# First get FSID
|
||
|
|
FSID=$(grep fsid /etc/pve/ceph.conf | awk '{print $3}')
|
||
|
|
|
||
|
|
# Add r630-01 to monmap
|
||
|
|
monmaptool --add r630-01 192.168.11.11 --fsid $FSID /tmp/monmap
|
||
|
|
|
||
|
|
# Inject updated monmap
|
||
|
|
ceph mon setmap -i /tmp/monmap
|
||
|
|
```
|
||
|
|
|
||
|
|
### Step 4: Create Monitor on R630-01
|
||
|
|
|
||
|
|
On **r630-01**:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Option 1: Use pveceph (recommended)
|
||
|
|
pveceph mon create
|
||
|
|
|
||
|
|
# Option 2: Manual creation if pveceph fails
|
||
|
|
# Get monmap from ml110-01
|
||
|
|
scp root@192.168.11.10:/tmp/monmap /tmp/
|
||
|
|
|
||
|
|
# Create monitor directory
|
||
|
|
mkdir -p /var/lib/ceph/mon/ceph-r630-01
|
||
|
|
chown ceph:ceph /var/lib/ceph/mon/ceph-r630-01
|
||
|
|
|
||
|
|
# Create keyring
|
||
|
|
ceph-authtool --create-keyring /var/lib/ceph/mon/ceph-r630-01/keyring --gen-key -n mon.
|
||
|
|
|
||
|
|
# Create monitor filesystem
|
||
|
|
ceph-mon --mkfs -i r630-01 --monmap /tmp/monmap --keyring /var/lib/ceph/mon/ceph-r630-01/keyring
|
||
|
|
|
||
|
|
# Set ownership
|
||
|
|
chown -R ceph:ceph /var/lib/ceph/mon/ceph-r630-01
|
||
|
|
```
|
||
|
|
|
||
|
|
### Step 5: Start Monitor Service
|
||
|
|
|
||
|
|
On **r630-01**:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
systemctl enable ceph-mon@r630-01
|
||
|
|
systemctl start ceph-mon@r630-01
|
||
|
|
systemctl status ceph-mon@r630-01
|
||
|
|
```
|
||
|
|
|
||
|
|
### Step 6: Verify Quorum
|
||
|
|
|
||
|
|
On **either node**:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
ceph quorum_status
|
||
|
|
ceph mon stat
|
||
|
|
ceph -s
|
||
|
|
```
|
||
|
|
|
||
|
|
You should see both monitors in quorum:
|
||
|
|
```json
|
||
|
|
"quorum": [0, 1],
|
||
|
|
"quorum_names": ["ml110-01", "r630-01"]
|
||
|
|
```
|
||
|
|
|
||
|
|
## Alternative: Recreate Monitor
|
||
|
|
|
||
|
|
If the above doesn't work, recreate the monitor:
|
||
|
|
|
||
|
|
On **r630-01**:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Stop monitor
|
||
|
|
systemctl stop ceph-mon@r630-01
|
||
|
|
systemctl disable ceph-mon@r630-01
|
||
|
|
|
||
|
|
# Remove monitor directory
|
||
|
|
rm -rf /var/lib/ceph/mon/ceph-r630-01
|
||
|
|
|
||
|
|
# Recreate
|
||
|
|
pveceph mon create
|
||
|
|
|
||
|
|
# Start
|
||
|
|
systemctl enable ceph-mon@r630-01
|
||
|
|
systemctl start ceph-mon@r630-01
|
||
|
|
```
|
||
|
|
|
||
|
|
## Troubleshooting
|
||
|
|
|
||
|
|
### Monitor Service Fails to Start
|
||
|
|
|
||
|
|
Check logs:
|
||
|
|
```bash
|
||
|
|
journalctl -u ceph-mon@r630-01 -n 100
|
||
|
|
```
|
||
|
|
|
||
|
|
Common issues:
|
||
|
|
- **"monitor data directory does not exist"**: Run `pveceph mon create`
|
||
|
|
- **"unable to bind"**: Check firewall, ports 6789 and 3300
|
||
|
|
- **"authentication"**: Check keyring permissions
|
||
|
|
|
||
|
|
### Monitor Not in Quorum
|
||
|
|
|
||
|
|
1. Verify network connectivity:
|
||
|
|
```bash
|
||
|
|
ping 192.168.11.10
|
||
|
|
ping 192.168.11.11
|
||
|
|
```
|
||
|
|
|
||
|
|
2. Check firewall:
|
||
|
|
```bash
|
||
|
|
ufw allow 6789/tcp
|
||
|
|
ufw allow 3300/tcp
|
||
|
|
```
|
||
|
|
|
||
|
|
3. Verify monmap includes both monitors:
|
||
|
|
```bash
|
||
|
|
ceph mon dump
|
||
|
|
```
|
||
|
|
|
||
|
|
### Still Not Working
|
||
|
|
|
||
|
|
If monitor still won't join:
|
||
|
|
1. Check if both nodes are in Proxmox cluster: `pvecm status`
|
||
|
|
2. Verify `/etc/pve/ceph.conf` is identical on both nodes
|
||
|
|
3. Check FSID matches on both nodes
|
||
|
|
4. Ensure time is synchronized: `chrony sources`
|
||
|
|
|