1С СЕРВЕР ВЗАИМОДЕЙСТВИЯ. ПЕРЕЕЗД В YANDEX CLOUD

1С СЕРВЕР ВЗАИМОДЕЙСТВИЯ. ПЕРЕЕЗД В YANDEX CLOUD

Привет программисты 1С. Сегодня я хочу рассказать вам о переезде сервера взаимодействия 1с с windows server на ubuntu в yandex cloud и перенос истории сообщений.

При переносе сервера взаимодействия 1с есть много нюансов, надо учесть версию postgresql, и подключение по ssh с помощью ключей. Короче будет полезно и надеюсь 1с разработают более удобный способ переноса истории сообщений.

ЗАКАЗАТЬ УСЛУГУ НАСТРОЙКИ СЕРВЕРА ВЗАИМОДЕЙСТВИЯ 1С ad***@*****ov.studio 
+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