1С СЕРВЕР ВЗАИМОДЕЙСТВИЯ. ПЕРЕЕЗД В YANDEX CLOUD
- Опубликовано Илья Низамов
- Разделы Blog
- Дата 20.01.2021
- Комментарии Нет комментариев
Привет программисты 1С. Сегодня я хочу рассказать вам о переезде сервера взаимодействия 1с с windows server на ubuntu в yandex cloud и перенос истории сообщений.
При переносе сервера взаимодействия 1с есть много нюансов, надо учесть версию postgresql, и подключение по ssh с помощью ключей. Короче будет полезно и надеюсь 1с разработают более удобный способ переноса истории сообщений.
+7 (917) 449-09-97
Глоссарий:
- ВМ – виртуальная машина в облаке yandex cloud
- СВ – 1с сервер взаимодействия
Создаем виртуальную машину в Yandex.cloud
Переходим в консоль по ссылке.
Виртуальную машину назовем ubuntucs и логин пользователя установим cs1.
Так же обязательно надо выбрать публичный IP адрес. Если у вас его еще нет, то вам предложат его зарезервировать.
Как видите, тут мы не можем задать пароль пользователя и подключаться к ВМ мы будем с помощью SSH ключей.
У яндекс есть отличная инструкция. Я же просто открою терминал в windows 10, запустив cmd. И выполню команду.
ssh-keygen -t rsa -b 2048
При генерации ssh ключей 3 раза нажмите Enter. В результате выполнения команды, в папке пользователя появится папка с ключами.
Откроем файл id_rsa.pub в текстовом редакторе. И в самом конце изменим имя пользователя на cs1.
Сохраним файл и скопируем все содержимое. Откроем консоль ВМ и вставим наш публичный ключ.
Настройка виртуальной машины
Теперь мы можем подключаться к машине через терминал, запускаем cmd. Публичный IP адрес вы можете скопировать из консоли ВМ.
ssh cs1@130.193.59.95
При первом подключении может выдать сообщение.
The authenticity of host '130.193.59.95 (130.193.59.95)' can't be established.
ECDSA key fingerprint is SHA256:ajljn2USEHenBrlS7QifmoKTOTUeNpEpKO/94K67ZNs.
Вводим yes и получаем доступ к ВМ. В принципе можно работать, но мне бы хотелось подключаться через программу putty и передавать файлы через WinSCP. Чтобы это сделать, надо разрешить доступ по паролю к ssh.
Открываем конфиг сервера ssh в текстовом редакторе.
sudo nano /etc/ssh/sshd_config
Найдите строку PasswordAuthentication и уберите знак # в начале, если он есть. Заместо no напишите yes
Чтобы сохранить ваши изменения в текстовом редакторе nano, нажмите Ctrl+X, затем введите Y и нажмите Enter.
Перезапустите ssh сервер.
sudo systemctl restart ssh
Так же надо задать пароль пользователю cs1. В консоли вводим команду и 2 раза пароль.
sudo passwd cs1
Пробуем подключиться к серверу через putty. Вводим публичный IP адрес, 22 порт, соединение по SSH. Наживаем Open.
При первом подключении выдаст предупреждение. Нажимаем Да и продолжаем.
Вводим имя пользователя и пароль. Если все хорошо, то вы увидите похожее окно.
Бекап сервера взаимодействия 1С
В данном примере я специально развернул сервер взаимодействия на старой версии PostgreSQL 9.5. Чтобы показать, как установить старую версию на новом сервере. А сервер взаимодействия установил под не стандартным пользователем.
Открываем утилиту pgAdmin, и находим нашу базу.
Тут мы видим, что к СВ уже подключена база.
Для того, чтобы без проблем развернуть dump, этой базы на новом сервере, нам надо узнать под каким пользователем функционирует данный сервер.
1С хранит эти данные в открытом виде, так что рекомендую сменить стандартный пароль пользователя postgres и закрыть порт 5432.
Открываем таблицу как на скриншоте и видим строку подключения, пользователя и пароль. На новом сервере мы создадим пользователя с таки же параметрами.
Создать бекап базы можно разными способами, но самым надежным оказался способ создания dump в командной строке.
В проводнике переходим в папку где установлен PostgreSQL.
C:\Program Files\PostgreSQL\9.5\bin
Вверху окна вводим CMD и командная строка откроется сразу в нашей папке.
В терминале вводим команду
pg_dump -U postgres -W 1ce-cs > C:\Backup\1ce-cs.dump
С помощью утилиты pg_dump, подключаясь к sql серверу под пользователем postgres, мы выгружаем базу данных 1ce-cs в файл 1ce-cs.dump который будет создан в папке C:\Backup\
Получившийся dump скопируйте на основной компьютер любым удобным вам способом.
Установка сервера взаимодействия 1С
Установка OpenJDK 8
Подключаемся к новому серверу через putty. И вводим команды.
sudo apt update
sudo apt install openjdk-8-jdk
java -version
Теперь установим переменную $JAVA_HOME глобально. Открываем конфиг в текстовом редакторе nano.
sudo nano /etc/environment
Добавляем путь. Сохраняем изменения и выходим.
JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-amd64"
Применяем настройки и проверяем, что все работает.
source /etc/environment
echo $JAVA_HOME
Установка PostgreSQL нужной версии
В моем случае я буду ставить версию 9.5. Идем в официальный мануал https://www.postgresql.org/download/linux/ubuntu/
и копируем от туда команды.
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
Если хотите установить последнюю версию, то вводите.
sudo apt-get -y install postgresql
А я укажу конкретную версию.
sudo apt-get install postgresql-9.5
Теперь подключимся к консоли PostgreSQL и зададим пароль пользователя postgres.
sudo -u postgres psql
\password postgres
postgres
\q
Все дальнейшие действия я буду выполнять подключившись к postgresql удаленно с помощью pgAdmin. Не делаю это через консоль, так как мне не удалось создать базу в консоли, которая начинается с цифры (привет установщику 1С).
Так как у на старом сервере база работала под пользователем cs с паролем cs-pass, то именно такого пользователя мы создадим на новом сервере.
Через pgAdmin создаем базу 1ce-cs, владельцем назначаем пользователя cs.
С помощью утилиты WinSCP копируем в домашнюю папку пользователя cs1 дистрибьютивы и дамп базы.
Возвращаемся к консоли и восстанавливаем дамп.
sudo -u postgres psql -W 1ce-cs < /home/cs1/1ce-cs.dump
Установка пакетов сервера взаимодействия 1С
Устанавливаем все пакеты.
sudo dpkg -i *.deb
Создаем пользователя, необходимые папки и назначаем права.
sudo useradd cs_user
sudo mkdir -p /var/cs/cs_instance
sudo chown cs_user:cs_user /var/cs/cs_instance
С помощью утилиты ring создаем экземпляр сервера взаимодействия.
sudo /opt/1C/1CE/x86_64/ring/ring cs instance create --dir /var/cs/cs_instance --owner cs_user
sudo /opt/1C/1CE/x86_64/ring/ring cs --instance cs_instance service create --username cs_user --java-home $JAVA_HOME --stopped
Настраиваем инстанс Hazelcast.
sudo useradd hc_user
sudo mkdir -p /var/cs/hc_instance
sudo chown hc_user:hc_user /var/cs/hc_instance
sudo /opt/1C/1CE/x86_64/ring/ring hazelcast instance create --dir /var/cs/hc_instance --owner hc_user
sudo /opt/1C/1CE/x86_64/ring/ring hazelcast --instance hc_instance service create --username hc_user --java-home $JAVA_HOME --stopped
Настраиваем инстанс Elasticsearch.
sudo useradd elastic_user
sudo mkdir -p /var/cs/elastic_instance
sudo chown elastic_user:elastic_user /var/cs/elastic_instance
sudo /opt/1C/1CE/x86_64/ring/ring elasticsearch instance create --dir /var/cs/elastic_instance --owner elastic_user
sudo /opt/1C/1CE/x86_64/ring/ring elasticsearch --instance elastic_instance service create --username elastic_user --java-home $JAVA_HOME --stopped
Настройка JDBC. Обратите внимание на то, какую базу я указываю в настройках, какого пользователя и пароль. Если они у вас другие, замените параметры на свои.
sudo /opt/1C/1CE/x86_64/ring/ring cs --instance cs_instance jdbc set-params --url jdbc:postgresql://localhost:5432/1ce-cs?currentSchema=public
sudo /opt/1C/1CE/x86_64/ring/ring cs --instance cs_instance jdbc set-params --username cs
sudo /opt/1C/1CE/x86_64/ring/ring cs --instance cs_instance jdbc set-params --password cs-pass
sudo /opt/1C/1CE/x86_64/ring/ring cs --instance cs_instance jdbc-privileged set-params --url jdbc:postgresql://localhost:5432/1ce-cs?currentSchema=public
sudo /opt/1C/1CE/x86_64/ring/ring cs --instance cs_instance jdbc-privileged set-params --username cs
sudo /opt/1C/1CE/x86_64/ring/ring cs --instance cs_instance jdbc-privileged set-params --password cs-pass
Перед настройкой WebSocket нам надо узнать внутренний IP адрес. Можно посмотреть в консоли ВМ, а можно выполнить команду ifconfig.
Если команда не срабатывает, вы можете ее установить.
sudo apt install net-tools
Берем IP адрес и настраиваем WebSocket.
sudo /opt/1C/1CE/x86_64/ring/ring cs --instance cs_instance websocket set-params --hostname 10.128.0.17
sudo /opt/1C/1CE/x86_64/ring/ring cs --instance cs_instance websocket set-params --port 8087
Запускаем сервисы.
sudo /opt/1C/1CE/x86_64/ring/ring hazelcast --instance hc_instance service start
sudo /opt/1C/1CE/x86_64/ring/ring elasticsearch --instance elastic_instance service start
sudo /opt/1C/1CE/x86_64/ring/ring cs --instance cs_instance service start
Выполняем инициализацию базы данных. Обратите внимание на имя базы, пользователя и пароль.
sudo curl -Sf -X POST -H "Content-Type: application/json" -d "{ \"url\" : \"jdbc:postgresql://localhost:5432/1ce-cs\", \"username\" : \"cs\", \"password\" : \"cs-pass\", \"enabled\" : true }" -u admin:admin http://localhost:8087/admin/bucket_server
Проверим, что все запустилось.
sudo curl http://localhost:8087/rs/health
Подключаем старую базу по новому адресу ws://130.193.59.95:8087
Настраиваем порты и включаем брандмауэр.
sudo ufw allow 8087
sudo ufw allow 22
sudo ufw enable
Метка:1с сервер взаимодействия