По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
Желание использовать данные с внешних сервисов это вполне обычная практика. Так как многие из этих сервисов доступны по HTTP(S) (REST API, например), то в этой статье мы хотим показать простой способ обращения к этим сервисам по cURL и обработку данных в случае, если сервер вернет JSON. Все взаимодействия будут выполняться из диалплана.
Простой cURL запрос
В диалплане Asterisk существует функция CURL, которая позволяет получить содержимое WEB или FTP страницы. Синтаксис запроса следующий:
CURL(url,post-data)
url - URL, к которому мы будем выполнять обращение;
post-data - по умолчанию будет выполнен GET – запрос. Если в данном параметре будут указаны различные значения, то будет выполнен POST запрос с указанными в переменной данными;
Например:
exten => _X.,1,Set(C_RESULT=${CURL(//merionet.ru/rest?num=84991234567)})
Здесь мы выполним GET запрос по указанному URL, а результат сохраним в переменной C_RESULT.
Использование HTTPS в запросах
Иногда, HTTPS запросы могут не срабатывать, так как удаленная сторона будет проверять наш SSL – сертификат. Если поставить параметр ssl_verifypeer=0, то такой проверки не будет:
same => n,Set(CURLOPT(ssl_verifypeer)=0)
Как воспользоваться этим в диалплане?
Легко. С помощью функции GotoIf мы можем определить действие, которое отработает на базе результата cURL:
exten => _X.,1,Set(C_RESULT=${CURL(//merionet.ru/rest?num=84991234567)})
same => n,GotoIf($["${C_RESULT}" = "1"]?res1:res2)
same => n(res1),Verbose(CURL Result = 1)
same => n,Hangup
same => n(res2),Verbose(CURL Result != 1)
same => n,Hangup
Указанный код отправит GET - запрос на rest, в котором в параметре num передаст номер звонящего (можно указать соответствующую переменную диалплана Asterisk). В случае, если результатом выполнения запроса будет 1, то мы перейдем к выполнению шага res1, а противоположном случае, res2.
res_json для обработки JSON ответов
На самом деле, для API, является обычной практикой возврат ответа в виде JSON. Поэтому, нам следует преобразовать эти данные перед обработкой их. Для этого мы воспользуемся модулем res_json из JSON библиотеки, который создан для расширения базовых возможностей диалплана с точки зрения обработки JSON.
Почитайте материал об установке данного модуля по этой ссылке.
exten => _X.,1,Set(C_RESULT=${CURL(//merionet.ru/rest.json)})
same => n,Set(result=${JSONELEMENT(C_RESULT, result/somefield)})
same => n,GotoIf($["${result}" = "1"]?res1:res2)
same => n(res1),Verbose(CURL Result = 1)
same => n,Hangup
same => n(res2),Verbose(CURL Result != 1)
same => n,Hangup
Для теста, создайте у себя на web – сервере файл rest.json со следующим содержанием:
{
"result": {
"somefield": 1
}
}
В этой статье мы рассмотрим процесс установки и настройки режима Docker Swarm на сервере Ubuntu 16.04.
Docker Swarm является стандартным инструментом кластеризации для Docker, преобразующий набор хостов Docker в один последовательный кластер, называемый Swarm. Docker Swarm обеспечивает доступность и высокую производительность работы, равномерно распределяя ее по хостингам Docker внутри кластера.
Установка Docker Swarm:
Перед началом обновите Ваш системный репозиторий до последней версии с помощью следующей команды:
sudo apt-get update -y && sudo apt-get upgrade -y
После обновления следует выполнить перезагрузку системы. Необходимо еще установить среду Docker. По умолчанию Docker не доступен в репозитории Ubuntu 16.04, поэтому сначала необходимо создать хранилище Docker и начать установку с помощью следующей команды:
sudo apt-get install apt-transport-https software-properties-common ca-certificates -y:
Добавляем GPG ключ для Docker:
wget https://download.docker.com/linux/ubuntu/gpg && sudo apt-key add gpg
Добавляем репозиторий Docker и обновляем с помощью команды:
sudo echo "deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable" >> /etc/apt/sources.list sudo apt-get update -y
Установка среды Docker с помощью следующей команды:
sudo apt-get install docker-ce -y
После установки запустите службу Docker во время загрузки с помощью следующей команды:
sudo systemctl start docker && sudo systemctl enable docker
Для запуска Docker необходимы root права, а для других юзеров доступ получается только с помощью sudo. При необходимости запустить docker без использования sudo, есть возможность создать Unix и включить в него необходимых пользователей за счет выполнения следующих строк кода:
sudo groupadd docker && sudo usermod -aG docker dockeruser
Затем выйдя из системы, делаем вход через dockeruser.
sudo ufw allow 2376/tcp && sudo ufw allow 7946/udp && sudo ufw allow 7946/tcp && sudo ufw allow 80/tcp && sudo ufw allow 2377/tcp && sudo ufw allow 4789/udp
Затем перезагрузите брандмауэр, включив его при загрузке
sudo ufw reload && sudo ufw enable
Выполните перезагрузку “Докера”:
sudo systemctl restart docker
Создавая Docker Swarm кластер, необходимо определиться с IP-адресом, за счет которого ваш узел будет действовать в качестве диспетчера:
docker swarm init --advertise-addr 192.168.0.103
Вы должны увидеть следующий вывод:
Swarm initialized: current node (iwjtf6u951g7rpx6ugkty3ksa) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-5p5f6p6tv1cmjzq9ntx3zmck9kpgt355qq0uaqoj2ple629dl4-5880qso8jio78djpx5mzbqcfu 192.168.0.103:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
Проверяем его состояние:
docker node ls
Если все работает правильно, вы должны увидеть следующий вывод:
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
iwjtf6u951g7rpx6ugkty3ksa * Manager-Node Ready Active Leader
Проверка статуса Docker Swarm Cluster осуществляется следующим образом:
code> docker info
Вывод должен быть следующим:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 17.09.0-ce
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: active
NodeID: iwjtf6u951g7rpx6ugkty3ksa
Is Manager: true
ClusterID: fo24c1dvp7ent771rhrjhplnu
Managers: 1
Nodes: 1
Orchestration:
Task History Retention Limit: 5
Raft:
Snapshot Interval: 10000
Number of Old Snapshots to Retain: 0
Heartbeat Tick: 1
Election Tick: 3
Dispatcher:
Heartbeat Period: 5 seconds
CA Configuration:
Expiry Duration: 3 months
Force Rotate: 0
Autolock Managers: false
Root Rotation In Progress: false
Node Address: 192.168.0.103
Manager Addresses:
192.168.0.103:2377
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 06b9cb35161009dcb7123345749fef02f7cea8e0
runc version: 3f2f8b84a77f73d38244dd690525642a72156c64
init version: 949e6fa
Security Options:
apparmor
seccomp
Profile: default
Kernel Version: 4.4.0-45-generic
Operating System: Ubuntu 16.04.1 LTS
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 992.5MiB
Name: Manager-Node
ID: R5H4:JL3F:OXVI:NLNY:76MV:5FJU:XMVM:SCJG:VIL5:ISG4:YSDZ:KUV4
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
Узел теперь настроен правильно, пришло время добавить его в Swarm Cluster. Сначала скопируйте вывод команды «swarm init» из вывода результата выше, а затем вставьте этот вывод в рабочий узел для присоединения к Swarm Cluster:
docker swarm join --token SWMTKN-1-5p5f6p6tv1cmjzq9ntx3zmck9kpgt355qq0uaqoj2ple629dl4-5880qso8jio78djpx5mzbqcfu 192.168.0.103:2377
Вы должны увидеть следующий вывод:
This node joined a swarm as a worker.
Теперь выполните следующую команду для вывода списка рабочего узла:
docker node ls
Вы должны увидеть информацию следующего вида:
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
iwjtf6u951g7rpx6ugkty3ksa * Manager-Node Ready Active Leader
snrfyhi8pcleagnbs08g6nnmp Worker-Node Ready Active
Docker Swarm Cluster запущен и работает, теперь можно запустить веб-сервис в Docker Swarm Mode. За счет следующей строки кода выполнится развертывание службы веб-сервера:
docker service create --name webserver -p 80:80 httpd
Приведенная выше строка создаст контейнер веб-сервера Apache и сопоставит его с 80 портом, позволив иметь полный доступ к необходимому веб-серверу Apache из удаленной системы. Теперь запускаем проверку работающего сервиса с помощью команды:
docker service ls
Вы должны увидеть следующий вывод:
ID NAME
MODE REPLICAS IMAGE PORTS
nnt7i1lipo0h webserver replicated 0/1 apache:latest *:80->80/tcp
Запустите службу масштабирования веб-сервера с помощью строки:
docker service scale webserver = 2
А также проверьте состояние с помощью команды:
docker service ps webserver
Вы должны увидеть следующий вывод:
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
7roily9zpjvq webserver.1 httpd:latest Worker-Node Running Preparing about a minute ago
r7nzo325cu73 webserver.2 httpd:latest Manager-Node Running Preparing 58 seconds ago
Веб-сервер Apache работает. Теперь вы можете получить доступ к веб-серверу:
Служба веб-сервера Apache теперь распределена по двум узлам. Docker Swarm обеспечивает доступность вашего сервиса. Если веб-сервер отключается на рабочем узле, то новый контейнер будет запущен на узле менеджера. Для проверки доступности следует остановить службу Docker на рабочем узле:
sudo systemctl stop docker
Запустите службу веб-сервера с помощью команды:
docker service ps webserver
Вы должны увидеть следующую информацию:
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
ia2qc8a5f5n4 webserver.1 httpd:latest Manager-Node Ready Ready 1 second ago
7roily9zpjvq \_ webserver.1 httpd:latest Worker-Node Shutdown Running 15 seconds ago r7nzo325cu73 webserver.2 httpd:latest Manager-Node Running Running 23 minutes ago
С помощью данной статьи, вы смогли установить и настроить кластер Docker Swarm для ОС Ubuntu 16.04. Теперь вы можете легко масштабировать свое приложение в кластере до тысячи узлов и пятидесяти тысяч контейнеров без существенной потери производительности.
Когда сервер Windows работает в течение длительного периода времени, приложения и функции операционной системы могут работать нестабильно. Нестабильная операционная система может иметь сбои приложений, зависание приложений или утечки памяти. Иногда даже важные системные функции перестают отвечать.
Простым решением является перезагрузка. В этом руководстве вы узнаете, как перезапустить Windows Server 2016 с несколькими параметрами команды.
Перезагрузить Windows Server через графический интерфейс
Интерфейс Windows Server 2016 представляет собой графический интерфейс, который упрощает многие задачи.
Нажмите: меню Пуск -> Кнопка питания -> Перезагрузить.
Как перезагрузить Windows Server с помощью командной строки
В некоторых случаях у вас может не быть установлен компонент GUI. Или ваша операционная система столкнулась с проблемой, и все, что вы можете получить доступ, это командная строка.
Шаг 1: Откройте командную строку
Нажмите Ctrl + Alt + Del.
Система должна показать меню - щелкните Task Manager (Диспетчер задач).
В окне Task Manager (Диспетчер задач) нажмите More Details (Подробнее).
Откройте меню File (Файл) и выберите Run new task (Запустить новое задание).
В поле введите cmd.exe–, затем установите флажок, чтобы создать задачу с правами администратора. Нажмите ОК.
Должно появиться черное окно с белым текстом.
Шаг 2. Перезагрузите операционную систему Windows Server.
В окне командной строки введите команду перезагрузки Windows Server и нажмите клавишу Enter:
shutdown –r
Параметр –r заставляет Windows перезагружаться, а не просто выключаться.
Перезапуск из PowerShell
Windows PowerShell напоминает расширенную версию командной строки. Он основан на .NET Framework и включает язык сценариев. PowerShell полезен для работы под операционной системой Windows.
Шаг 1. Запустите PowerShell
Нажмите Ctrl + Alt + Del и выберите Task Manager (Диспетчер задач).
Откройте меню File (Файл) и выберите Run new task (Запустить новое задание).
В командной строке введите powershell.exe и установите флажок, чтобы начать с правами администратора. Нажмите ОК.
Должно открыться новое окно с темно-синим фоном. Вы можете понять, что находитесь в окне PowerShell, если подсказка начинается с PS.
Шаг 2: перезагрузите систему
В окне PowerShell введите следующую команду и нажмите Enter:
Restart-Computer
По умолчанию вы получите 5-секундный обратный отсчет, затем система перезагрузится. Вы можете добавить опцию, чтобы отложить перезапуск на более чем 5 секунд по умолчанию:
Restart-Computer –delay 15
Перезагрузка удаленного сервера Windows с помощью PowerShell
Шаг 1. Запустите PowerShell
Если вы находитесь в командной строке, введите команду:
PowerShell
Подсказка добавит PS в начале, и ваши набранные команды должны появиться в желтом цвете.
Шаг 2. Перезагрузитесь удаленно
В окне PowerShell введите следующее:
Restart-Computer –ComputerName “NAME_OF_SYSTEM”
Замените NAME_OF_SYSTEM на имя компьютера, который вы хотите перезагрузить. Не забудьте поставить кавычки.
Примечание. Предполагается, что ваши текущие учетные данные те же, что и для удаленной системы. Обычно это может выглядеть как имя пользователя администратора, и один и тот же пароль для обеих систем. Это также может работать, если обе системы находятся в одном домене, а ваша учетная запись пользователя имеет соответствующие разрешения.