feat(配置): 添加qdrant主机配置和cgroup修复脚本
添加qdrant到生产环境主机清单 新增两个Alpine Linux下的cgroup配置修复脚本,分别适用于openrc和systemd环境
This commit is contained in:
parent
2f01cb42c9
commit
ad531936dd
|
|
@ -54,6 +54,7 @@ semaphoressh ansible_host=localhost ansible_user=root ansible_become=yes ansible
|
|||
redis ansible_host=redis ansible_user=root ansible_become=yes ansible_become_pass=313131
|
||||
authentik ansible_host=authentik ansible_user=root ansible_become=yes ansible_become_pass=313131
|
||||
calibreweb ansible_host=calibreweb ansible_user=root ansible_become=yes ansible_become_pass=313131
|
||||
qdrant ansible_host=qdrant ansible_user=root ansible_become=yes
|
||||
|
||||
[vm]
|
||||
kali ansible_host=kali ansible_user=ben ansible_become=yes ansible_become_pass=3131
|
||||
|
|
|
|||
|
|
@ -0,0 +1,124 @@
|
|||
#!/bin/bash
|
||||
# Alternative script to fix cgroup configuration using systemd approach
|
||||
|
||||
echo "🔧 Fixing cgroup configuration using systemd approach..."
|
||||
|
||||
# Check if running as root
|
||||
if [ "$(id -u)" -ne 0 ]; then
|
||||
echo "❌ This script must be run as root"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Update package lists
|
||||
echo "📦 Updating package lists..."
|
||||
apk update
|
||||
|
||||
# Install necessary packages
|
||||
echo "📦 Installing necessary packages..."
|
||||
apk add systemd openrc
|
||||
|
||||
# Create systemd cgroup configuration
|
||||
echo "🔧 Creating systemd cgroup configuration..."
|
||||
mkdir -p /etc/systemd
|
||||
cat > /etc/systemd/system.conf << 'EOF'
|
||||
[Manager]
|
||||
DefaultControllers=cpu cpuacct memory devices freezer net_cls blkio cpuset perf_event pids
|
||||
EOF
|
||||
|
||||
# Create systemd cgroup mount configuration
|
||||
echo "🔧 Creating systemd cgroup mount configuration..."
|
||||
mkdir -p /etc/systemd/system
|
||||
cat > /etc/systemd/system/sys-fs-cgroup.mount << 'EOF'
|
||||
[Unit]
|
||||
Description=Control Group Hierarchy
|
||||
DefaultDependencies=no
|
||||
Before=sysinit.target
|
||||
ConditionPathExists=/sys/fs/cgroup
|
||||
|
||||
[Mount]
|
||||
What=cgroup
|
||||
Where=/sys/fs/cgroup
|
||||
Type=cgroup
|
||||
Options=nosuid,noexec,nodev
|
||||
|
||||
[Install]
|
||||
WantedBy=sysinit.target
|
||||
EOF
|
||||
|
||||
# Create systemd service to set up cgroups
|
||||
echo "🔧 Creating systemd service to set up cgroups..."
|
||||
cat > /etc/systemd/system/setup-cgroups.service << 'EOF'
|
||||
[Unit]
|
||||
Description=Set up cgroups
|
||||
After=sys-fs-cgroup.mount
|
||||
DefaultDependencies=no
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=/bin/sh -c 'for subsystem in cpu cpuacct memory devices freezer net_cls blkio cpuset perf_event pids; do mkdir -p /sys/fs/cgroup/$subsystem; mount -t cgroup cgroup /sys/fs/cgroup/$subsystem; done'
|
||||
RemainAfterExit=yes
|
||||
|
||||
[Install]
|
||||
WantedBy=sysinit.target
|
||||
EOF
|
||||
|
||||
# Enable systemd services
|
||||
echo "🚀 Enabling systemd services..."
|
||||
systemctl enable sys-fs-cgroup.mount
|
||||
systemctl enable setup-cgroups.service
|
||||
|
||||
# Create a script to manually set up cgroups
|
||||
echo "🔧 Creating manual cgroup setup script..."
|
||||
cat > /usr/local/bin/setup-cgroups-manual.sh << 'EOF'
|
||||
#!/bin/bash
|
||||
# Manual cgroup setup script
|
||||
|
||||
# Mount cgroup filesystem if not already mounted
|
||||
if ! mountpoint -q /sys/fs/cgroup; then
|
||||
echo "Mounting cgroup filesystem..."
|
||||
mount -t cgroup cgroup /sys/fs/cgroup
|
||||
fi
|
||||
|
||||
# Set up all cgroup subsystems
|
||||
for subsystem in cpu cpuacct memory devices freezer net_cls blkio cpuset perf_event pids; do
|
||||
if [ ! -d "/sys/fs/cgroup/$subsystem" ]; then
|
||||
mkdir -p "/sys/fs/cgroup/$subsystem"
|
||||
fi
|
||||
if ! mountpoint -q "/sys/fs/cgroup/$subsystem"; then
|
||||
echo "Mounting $subsystem subsystem..."
|
||||
mount -t cgroup cgroup "/sys/fs/cgroup/$subsystem"
|
||||
fi
|
||||
done
|
||||
|
||||
# Verify pids subsystem is available
|
||||
if [ -d /sys/fs/cgroup/pids ]; then
|
||||
echo "✅ PIDS cgroup subsystem is available"
|
||||
else
|
||||
echo "❌ PIDS cgroup subsystem is not available"
|
||||
fi
|
||||
EOF
|
||||
|
||||
chmod +x /usr/local/bin/setup-cgroups-manual.sh
|
||||
|
||||
# Create a script to start container with proper cgroup settings
|
||||
echo "🔧 Creating container startup script..."
|
||||
cat > /usr/local/bin/start-qdrant-container.sh << 'EOF'
|
||||
#!/bin/bash
|
||||
# Script to start Qdrant container with proper cgroup settings
|
||||
|
||||
# Set up cgroups first
|
||||
/usr/local/bin/setup-cgroups-manual.sh
|
||||
|
||||
# Start the container
|
||||
echo "Starting Qdrant container..."
|
||||
podman run -p 6333:6333 \
|
||||
-v $(pwd)/data:/qdrant/storage \
|
||||
hub.git4ta.fun/qdrant/qdrant
|
||||
EOF
|
||||
|
||||
chmod +x /usr/local/bin/start-qdrant-container.sh
|
||||
|
||||
echo "✅ Systemd cgroup configuration complete!"
|
||||
echo "🔄 Please reboot the system to ensure all changes take effect"
|
||||
echo "After reboot, you can use '/usr/local/bin/start-qdrant-container.sh' to start your container"
|
||||
echo "Alternatively, you can run '/usr/local/bin/setup-cgroups-manual.sh' before starting the container manually"
|
||||
|
|
@ -0,0 +1,112 @@
|
|||
#!/bin/bash
|
||||
# Script to fix cgroup configuration for container runtime in Alpine Linux
|
||||
|
||||
echo "🔧 Fixing cgroup configuration for container runtime..."
|
||||
|
||||
# Check if running as root
|
||||
if [ "$(id -u)" -ne 0 ]; then
|
||||
echo "❌ This script must be run as root"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Update package lists
|
||||
echo "📦 Updating package lists..."
|
||||
apk update
|
||||
|
||||
# Install necessary packages for cgroup management
|
||||
echo "📦 Installing cgroup-related packages..."
|
||||
apk add cgroup-tools cgroupfs-mount
|
||||
|
||||
# Create cgroup mount points
|
||||
echo "🔧 Creating cgroup mount points..."
|
||||
mkdir -p /sys/fs/cgroup/{cpu,cpuacct,memory,devices,freezer,net_cls,blkio,cpuset,perf_event,pids}
|
||||
|
||||
# Mount cgroup filesystems
|
||||
echo "🔧 Mounting cgroup filesystems..."
|
||||
mount -t cgroup cgroup /sys/fs/cgroup
|
||||
mount -t cgroup cgroup /sys/fs/cgroup/cpu
|
||||
mount -t cgroup cgroup /sys/fs/cgroup/cpuacct
|
||||
mount -t cgroup cgroup /sys/fs/cgroup/memory
|
||||
mount -t cgroup cgroup /sys/fs/cgroup/devices
|
||||
mount -t cgroup cgroup /sys/fs/cgroup/freezer
|
||||
mount -t cgroup cgroup /sys/fs/cgroup/net_cls
|
||||
mount -t cgroup cgroup /sys/fs/cgroup/blkio
|
||||
mount -t cgroup cgroup /sys/fs/cgroup/cpuset
|
||||
mount -t cgroup cgroup /sys/fs/cgroup/perf_event
|
||||
mount -t cgroup cgroup /sys/fs/cgroup/pids
|
||||
|
||||
# Add cgroup mounts to /etc/fstab for persistence
|
||||
echo "💾 Adding cgroup mounts to /etc/fstab..."
|
||||
cat >> /etc/fstab << EOF
|
||||
# Cgroup mounts for container runtime
|
||||
cgroup /sys/fs/cgroup cgroup defaults 0 0
|
||||
cgroup /sys/fs/cgroup/cpu cgroup defaults 0 0
|
||||
cgroup /sys/fs/cgroup/cpuacct cgroup defaults 0 0
|
||||
cgroup /sys/fs/cgroup/memory cgroup defaults 0 0
|
||||
cgroup /sys/fs/cgroup/devices cgroup defaults 0 0
|
||||
cgroup /sys/fs/cgroup/freezer cgroup defaults 0 0
|
||||
cgroup /sys/fs/cgroup/net_cls cgroup defaults 0 0
|
||||
cgroup /sys/fs/cgroup/blkio cgroup defaults 0 0
|
||||
cgroup /sys/fs/cgroup/cpuset cgroup defaults 0 0
|
||||
cgroup /sys/fs/cgroup/perf_event cgroup defaults 0 0
|
||||
cgroup /sys/fs/cgroup/pids cgroup defaults 0 0
|
||||
EOF
|
||||
|
||||
# Enable and start cgroup service if available
|
||||
if [ -f /etc/init.d/cgroups ]; then
|
||||
echo "🚀 Enabling and starting cgroups service..."
|
||||
rc-update add cgroups boot
|
||||
rc-service cgroups start
|
||||
fi
|
||||
|
||||
# Create a script to set up cgroups on boot
|
||||
echo "🔧 Creating cgroup setup script..."
|
||||
cat > /usr/local/bin/setup-cgroups.sh << 'EOF'
|
||||
#!/bin/bash
|
||||
# Script to set up cgroups on boot
|
||||
|
||||
# Mount cgroup filesystems if not already mounted
|
||||
if ! mountpoint -q /sys/fs/cgroup; then
|
||||
mount -t cgroup cgroup /sys/fs/cgroup
|
||||
fi
|
||||
|
||||
# Ensure all cgroup subsystems are mounted
|
||||
for subsystem in cpu cpuacct memory devices freezer net_cls blkio cpuset perf_event pids; do
|
||||
if [ ! -d "/sys/fs/cgroup/$subsystem" ]; then
|
||||
mkdir -p "/sys/fs/cgroup/$subsystem"
|
||||
fi
|
||||
if ! mountpoint -q "/sys/fs/cgroup/$subsystem"; then
|
||||
mount -t cgroup cgroup "/sys/fs/cgroup/$subsystem"
|
||||
fi
|
||||
done
|
||||
EOF
|
||||
|
||||
chmod +x /usr/local/bin/setup-cgroups.sh
|
||||
|
||||
# Add the script to local.d to run on boot
|
||||
echo "🚀 Adding cgroup setup script to boot sequence..."
|
||||
mkdir -p /etc/local.d
|
||||
echo "/usr/local/bin/setup-cgroups.sh" > /etc/local.d/cgroups.start
|
||||
chmod +x /etc/local.d/cgroups.start
|
||||
|
||||
# Enable local.d service
|
||||
rc-update add local default
|
||||
|
||||
# Verify cgroup setup
|
||||
echo "✅ Verifying cgroup setup..."
|
||||
if mountpoint -q /sys/fs/cgroup; then
|
||||
echo "✅ Cgroup filesystem is mounted"
|
||||
else
|
||||
echo "❌ Cgroup filesystem is not mounted"
|
||||
fi
|
||||
|
||||
# Check if pids subsystem is available
|
||||
if [ -d /sys/fs/cgroup/pids ]; then
|
||||
echo "✅ PIDS cgroup subsystem is available"
|
||||
else
|
||||
echo "❌ PIDS cgroup subsystem is not available"
|
||||
fi
|
||||
|
||||
echo "🎉 Cgroup configuration complete!"
|
||||
echo "🔄 Please reboot the system to ensure all changes take effect"
|
||||
echo "After reboot, you should be able to run your container successfully."
|
||||
Loading…
Reference in New Issue