
Как настроить Apache Dolphinscheduler с PostgreSQL и Zookeeper на Linux
31 июля 2025 г.Эта статья направит вас пошаговым за шагом на том, как начать Apache Dolphinscheduler, используя внешний PostgreSQL и Zookeeper. Независимо от того, являетесь ли вы новичком или опытным разработчиком, вы можете легко выполнить эти шаги для завершения установки и конфигурации в среде Linux/Unix. В дополнение к стандартным этапам установки, мы также используем несколько советов по развертыванию кластеров, которые помогут вам легко масштабировать вашу систему.
Конечно, если вы сталкиваетесь с такими проблемами, как подключения к базе данных, подключения к зоопору или проблемы с запуском услуг, не волнуйтесь - этот урок включает в себя подробные шаги по устранению неполадок, которые помогут вам быстро их разрешить.
Системные требования
- Операционная система: Linux/Unix (Centos 7+ или Ubuntu 16.04+ рекомендуется)
- Java Environment: JDK 1.8+
- База данных: PostgreSQL 9.6+
- Распределенная координационная служба: Zookeeper 3.4.6+
- Память: по крайней мере 4 ГБ рекомендуется
- Дисковое пространство: по крайней мере 10 ГБ рекомендуется
Подготовка
- Установить и настроить PostgreSQL
# Install PostgreSQL (CentOS example)
sudo yum install -y postgresql-server postgresql-contrib
# Initialize the database
sudo postgresql-setup initdb
# Start the service
sudo systemctl start postgresql
sudo systemctl enable postgresql
# Create DolphinScheduler database and user
sudo -u postgres psql -c "CREATE USER dolphinscheduler WITH PASSWORD 'yourpassword';"
sudo -u postgres psql -c "CREATE DATABASE dolphinscheduler OWNER dolphinscheduler;"
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE dolphinscheduler TO dolphinscheduler;"
# Modify pg_hba.conf
sudo vi /var/lib/pgsql/data/pg_hba.conf
# Add or modify the following line:
host all all 0.0.0.0/0 md5
# Modify postgresql.conf
sudo vi /var/lib/pgsql/data/postgresql.conf
# Change listen_addresses to:
listen_addresses = '*'
# Restart PostgreSQL
sudo systemctl restart postgresql
- Установить и настроить Zookeeper
# Download Zookeeper
wget https://downloads.apache.org/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz
tar -xzf apache-zookeeper-3.7.1-bin.tar.gz
mv apache-zookeeper-3.7.1-bin /opt/zookeeper
# Configure Zookeeper
cd /opt/zookeeper/conf
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg
# Set data directory and server configuration (if clustered)
dataDir=/opt/zookeeper/data
# No need to change server settings for standalone mode
# Create data directory
mkdir /opt/zookeeper/data
# Start Zookeeper
/opt/zookeeper/bin/zkServer.sh start
Установите и настройте Dolphinscheduler 3.1.9
- Скачать и извлечь
wget https://downloads.apache.org/dolphinscheduler/3.1.9/apache-dolphinscheduler-3.1.9-bin.tar.gz
tar -xzf apache-dolphinscheduler-3.1.9-bin.tar.gz
mv apache-dolphinscheduler-3.1.9-bin /opt/dolphinscheduler
- Изменить файлы конфигурации редактировать
common.properties
vi /opt/dolphinscheduler/conf/common.properties
Внесите следующие изменения:
# Database config
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://your-postgresql-server:5432/dolphinscheduler
spring.datasource.username=dolphinscheduler
spring.datasource.password=yourpassword
# Zookeeper config
registry.plugin.name=zookeeper
registry.plugin.type=zookeeper
registry.servers=your-zookeeper-server:2181
Необязательно: изменить переменные среды
vi /opt/dolphinscheduler/conf/env/dolphinscheduler_env.sh
Добавить или обновить переменные среды Java:
export JAVA_HOME=/usr/java/jdk1.8.0_291
export PATH=$JAVA_HOME/bin:$PATH
- Инициализировать базу данных
/opt/dolphinscheduler/script/create-dolphinscheduler.sh
- Start Services Start Master Server
/opt/dolphinscheduler/bin/dolphinscheduler-daemon.sh start master-server
Начать сервер работников
/opt/dolphinscheduler/bin/dolphinscheduler-daemon.sh start worker-server
Start API -сервер
/opt/dolphinscheduler/bin/dolphinscheduler-daemon.sh start api-server
Начать сервер оповещения
/opt/dolphinscheduler/bin/dolphinscheduler-daemon.sh start alert-server
Проверьте установку
- Проверьте статус процесса:
ps -ef | grep dolphinscheduler
- Получите доступ к веб -интерфейсу: порт по умолчанию: 12345 Access URL:http: // your-server-ip: 12345/dolphinschedulerИмя пользователя по умолчанию/пароль: Admin/Dolphinscheduler123
Руководство по развертыванию кластера
Шаги развертывания режима кластера
Если вы хотите развернуть в режиме кластера, выполните следующие действия:
- Развернуть рабочие серверы на нескольких узлах
Требования узла
- Развернуть рабочие серверы не менее 3 узлов (рекомендуется нечетное число)
- Каждый узел должен иметь одинаковую версию пакета
- Рекомендуемые спецификации сервера:
- ЦП: 4 ядра или более
- Память: 8 ГБ или более
- Диск: 100 ГБ+ (настраиваем на основе объема данных)
Пример План развертывания
- Узел 1 (первичный): мастер -сервер + работник сервер
- IP: 192.168.1.101
- Роль: мастер + работник
- Узел 2 (рабочий): сервер работников
- IP: 192.168.1.102
- Роль: работник
- Узел 3 (Рабочий): Сервер рабочего
- IP: 192.168.1.103
- Роль: работник
Установка примечания
- Запустите один и тот же сценарий установки на всех узлах
- Убедитесь, что пути установки согласованы между узлами
- Проверьте сетевое подключение между узлами (используйте Ping/Telnet)
- Настройка
registry.servers
Подробные шаги конфигурации
- Редактировать
common.properties
На всех узлах- Путь файла:
/opt/your_app/conf/common.properties
- Путь файла:
- Набор
registry.servers
по адресам кластера Zookeeper - Пример формат:
registry.servers=zk1:2181,zk2:2181,zk3:2181
Проверка конфигурации
- Использоватьzkcli.shДля проверки конфигурации Zookeeper
./zkCli.sh -server zk1:2181
- Проверьте регистрацию узла:
ls /your_app/nodes
- Конфигурация синхронизации времени
Подробный план синхронизации времениВсе узлы должны поддерживать синхронизацию времени (в течение 1 секунды дрейфа). Рекомендуемые шаги:
Настройка NTP
- Установите NTP:
yum install -y ntp
- Синхронизирована с NTP -сервером (пример Aliyun):
ntpdate ntp.aliyun.com
- Установить Auto-Sync:
# Enable at startup
systemctl enable ntpd
# Start service
systemctl start ntpd
- Проверьте синхронизацию:
ntpq -p
date
Альтернативный вариант синхронизации времениЕсли внешний NTP -сервер недоступен, настройте внутренний сервер времени:
- Назначить один сервер как источник времени
- Синхронизируйте все другие узлы с этим сервером
- Пример конфигурации:
ntpdate 192.168.1.100
Время синхронизации
- Рекомендуется настроить задание Crontab для периодической синхронизации:
*/5 * * * * /usr/sbin/ntpdate ntp.aliyun.com >/dev/null 2>&1
- Для систем, чувствительных к времени (например, финансам), поддерживайте дрейф <100 мс.
Общее устранение неполадок
Проблемы с подключением к базе данных
- PostgreSQL удаленный доступ к конфигурации
- Проверять
pg_hba.conf
файл и убедитесь, что он включает в себя:
host all all 0.0.0.0/0 md5
- Перезапустить PostgreSQL после изменений
- Проверка полномочий
- Проверка соединения с PSQL:
psql -h [host] -U [username] -d [database]
- Убедиться, что пароль верен
- Проверка брандмауэра
- Проверьте, открыт ли порт 5432:
firewall-cmd --list-all
- При необходимости откройте порт:
firewall-cmd --zone=public --add-port=5432/tcp --permanent
firewall-cmd --reload
Проблемы с подключением к зооперу
- Базовый тест подключения
- Используйте Telnet:
telnet your-zookeeper-server 2181
- Следует показать: «Подключено к вашему Zookeeper-Server»
- Проверка журнала
- Посмотреть журналы Zookeeper:
tail -f /var/log/zookeeper/zookeeper.log
- Общие проблемы:
- Недостаточно дискового пространства
- Низкое распределение памяти
- Неправильная конфигурация кластера
Проблемы за стартап услуг
- Анализ журнала
- Проверьте основной файл журнала:
tail -n 100 /opt/dolphinscheduler/logs/dolphinscheduler-api.log
- Проверьте другие журналы компонентов:
/opt/dolphinscheduler/logs/
├── dolphinscheduler-alert-server.log
├── dolphinscheduler-api-server.log
├── dolphinscheduler-master-server.log
└── dolphinscheduler-worker-server.log
- Java Environment Check
- Проверьте Java версию:
java -version
- Requirement: JDK 1.8+
- Проверьте java_home:
echo $JAVA_HOME
- Проверьте настройки памяти:
jmap -heap <pid>
- Проверка конфликта порта
- Проверьте использование порта:
netstat -tunlp | grep [port]
- Порты по умолчанию:
- Мастер -сервер: 5678
- Сервер рабочей силы: 1234
- API -сервер: 12345
Оригинал