{"id":136,"date":"2019-09-03T18:51:03","date_gmt":"2019-09-03T16:51:03","guid":{"rendered":"https:\/\/www.grutt.org\/?p=136"},"modified":"2019-09-03T21:45:08","modified_gmt":"2019-09-03T19:45:08","slug":"ors-ors-everywhere","status":"publish","type":"post","link":"https:\/\/www.grutt.org\/?p=136","title":{"rendered":"ORS, ORS everywhere&#8230;"},"content":{"rendered":"\n<p>Oui bon je sais, je devais continuer mes tutos sur SIP Server. Mais \u00ab\u00a0n\u00e9cessit\u00e9 fait loi\u00a0\u00bb, alors on va se faire une petite installation d&rsquo;ORS, et ceci en mode <strong>cluster<\/strong>.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/media.giphy.com\/media\/NAnYvSGZMYenS\/giphy.gif\" alt=\"\"\/><\/figure><\/div>\n\n\n\n<p>Pour rappel, le gros int\u00e9r\u00eat du mode cluster est que si vos besoins de traitement augmentent, vous pouvez tr\u00e8s facilement rajouter un nouveau noeud et ainsi r\u00e9partir la charge sur N+1 serveurs.<br><br>Bon, c&rsquo;est pas le tout de papoter mais : let&rsquo;s go !<br><br>PS : je pars du principe que vous partez d&rsquo;un socle Genesys existant avec couches framework et management OK.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">On commence par une installation classique<\/h2>\n\n\n\n<p>Bon tout d&rsquo;abord, on rappelle la bible : <a href=\"https:\/\/docs.genesys.com\/Documentation\/OS\/8.1.4\/Deployment\">https:\/\/docs.genesys.com\/Documentation\/OS\/8.1.4\/Deployment<\/a>\/General#Configuring_an_ORS_Cluster cette section de la doc est d\u00e9di\u00e9e sp\u00e9cifiquement aux d\u00e9ploiements d&rsquo;ORS en mode cluster et je dois dire que pour une fois, elle m&rsquo;a sembl\u00e9 claire m\u00eame si il faut bien faire attention aux petites lignes.De mani\u00e8re classique, on va commencer par r\u00e9cup\u00e9rer le package d&rsquo;installation correspondant \u00e0 votre OS, r\u00e9cup\u00e9rer les templates et cr\u00e9er le mod\u00e8le d&rsquo;application dans CME\/GA\/GAX.<\/p>\n\n\n\n<p>Une fois celui-ci cr\u00e9e, on attaque la cr\u00e9ation de l&rsquo;application elle-m\u00eame. Dans le cas qui nous int\u00e9resse, je vais l&rsquo;appeler ORS_N11_Pr. Petit point nomenclature, je vais le nommer comme ceci pour :<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>ORS_ : bon bah \u00e7a je pense que c&rsquo;est clair<\/li><li>1 car il s&rsquo;agit du premier cluster ORS que je mets en place<\/li><li>1 car il s&rsquo;agit du premier noeud de ce cluster<\/li><li>_Pr pour indiquer que c&rsquo;est le primaire. En effet, au sein de ce cluster, rien ne nous emp\u00eachera ensuite de mettre chaque noeud en primaire\/backup. Overkill certes mais quand il faut&#8230;<\/li><\/ul>\n\n\n\n<p>Lors de la d\u00e9claration de l&rsquo;application elle-m\u00eame, pas de pi\u00e8ge particulier. Juste bien penser dans les connexions \u00e0 mettre URS, ainsi que les T-Server\/SIP Server\/Interaction Server pour lesquels votre ORS devra jouer des strat\u00e9gies.<br><br>Ci-desssous, un exemple d&rsquo;application configur\u00e9e suite \u00e0 son installation :<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"694\" height=\"675\" src=\"https:\/\/www.grutt.org\/wp-content\/uploads\/2019\/09\/ORS1.png\" alt=\"\" class=\"wp-image-140\" srcset=\"https:\/\/www.grutt.org\/wp-content\/uploads\/2019\/09\/ORS1.png 694w, https:\/\/www.grutt.org\/wp-content\/uploads\/2019\/09\/ORS1-300x292.png 300w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><\/figure>\n\n\n\n<p>Un petit apart\u00e9 durant l&rsquo;installation, il vous sera demand\u00e9 si vous souhaitez utiliser l'\u00a0\u00bbEnhanced Orchestration Cluster Configuration\u00a0\u00bb. Nous allons r\u00e9pondre \u00ab\u00a0yes\u00a0\u00bb, puis donner un nom de transaction list (ici \u00ab\u00a0Cluster_ORS_1\u00a0\u00bb), notons le bien. <\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"254\" src=\"https:\/\/www.grutt.org\/wp-content\/uploads\/2019\/09\/ORS2-1024x254.png\" alt=\"\" class=\"wp-image-141\" srcset=\"https:\/\/www.grutt.org\/wp-content\/uploads\/2019\/09\/ORS2-1024x254.png 1024w, https:\/\/www.grutt.org\/wp-content\/uploads\/2019\/09\/ORS2-300x74.png 300w, https:\/\/www.grutt.org\/wp-content\/uploads\/2019\/09\/ORS2-768x190.png 768w, https:\/\/www.grutt.org\/wp-content\/uploads\/2019\/09\/ORS2.png 1102w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">On attaque la partie Cluster<\/h2>\n\n\n\n<p>Afin de pr\u00e9parer le fonctionnement en cluster, nous allons en effet cr\u00e9er une transaction list au nom de \u00ab\u00a0Cluster_ORS_1\u00a0\u00bb dans GAX. Dans les options de cette liste, nous cr\u00e9ons une section au nom de \u00ab\u00a0cluster\u00a0\u00bb et qui contiendra des ensembles cl\u00e9-valeur o\u00f9 la cl\u00e9 est le nom de votre application ORS membre du cluster, et la valeur le nom du datacenter o\u00f9 est localis\u00e9 cette application. Si vous en avez un seul datacenter, vous pouvez laisser la valeur vide ou mettre un nom g\u00e9n\u00e9rique, comme \u00ab\u00a0DC1\u00a0\u00bb ci-dessous.<br><br>Dans cet exemple, j&rsquo;ai donc un cluster constitu\u00e9 de 2 noeuds, mes applications ORS_11_Pr et ORS_12_Pr<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"513\" height=\"347\" src=\"https:\/\/www.grutt.org\/wp-content\/uploads\/2019\/09\/ORS3.png\" alt=\"\" class=\"wp-image-142\" srcset=\"https:\/\/www.grutt.org\/wp-content\/uploads\/2019\/09\/ORS3.png 513w, https:\/\/www.grutt.org\/wp-content\/uploads\/2019\/09\/ORS3-300x203.png 300w\" sizes=\"auto, (max-width: 513px) 85vw, 513px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"901\" height=\"206\" src=\"https:\/\/www.grutt.org\/wp-content\/uploads\/2019\/09\/ORS45png.png\" alt=\"\" class=\"wp-image-147\" srcset=\"https:\/\/www.grutt.org\/wp-content\/uploads\/2019\/09\/ORS45png.png 901w, https:\/\/www.grutt.org\/wp-content\/uploads\/2019\/09\/ORS45png-300x69.png 300w, https:\/\/www.grutt.org\/wp-content\/uploads\/2019\/09\/ORS45png-768x176.png 768w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/figure>\n\n\n\n<p>N.B. : seuls les ORS primaires sont \u00e0 indiquer dans la transaction list, pas les applications de backup.<br><br>Les plus attentifs auront not\u00e9 l&rsquo;application ORS_12_Pr indiqu\u00e9 dans le cluster, mais non cr\u00e9\u00e9. Et bien allons-y pour cr\u00e9er le nouvel objet ORS_12_Pr, le param\u00e9trer et l&rsquo;installer.<br><br>Ses param\u00e8tres \u00e9tant tr\u00e8s proches, le clonage est votre ami \ud83d\ude09<br><br>Une fois install\u00e9, d\u00e9marrez vos 2 ORS et vous serez l&rsquo;heureux \u00ab\u00a0propri\u00e9taire\u00a0\u00bb d&rsquo;un joli cluster d&rsquo;ORS \ud83d\ude42<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Quelques notes sur cette installation<\/h2>\n\n\n\n<p>Le but de ce tutorial \u00e9tait de faire une pr\u00e9sentation rapide de l&rsquo;installation d&rsquo;un cluster ORS. Quelques notes additionnelles :<br>&#8211; Si dans les logs de votre ORS vous avez le message \u00ab\u00a0<em>Configuration error. Class [Cluster] : This node is not operational &#8211; it is not part of ORS Cluster<\/em>\u00ab\u00a0, il s&rsquo;agit probablement d&rsquo;une erreur de frappe dans votre transaction list. Partez \u00e0 la chasse aux coquilles !<br>&#8211; Si vous avez besoin de plus de noeuds pour tenir la charge, cela n&rsquo;est pas plus compliqu\u00e9 que d&rsquo;installer un 3\u00e8me noeud puis d&rsquo;indiquer celui-ci dans votre transaction list. Elle est pas belle la vie ?<br>&#8211; Cette transaction list vous permet \u00e9galement de stocker les options \u00ab\u00a0autres\u00a0\u00bb li\u00e9es \u00e0 vos ORS. Ces options prendront le pas sur celles configur\u00e9es au niveau de chaque application. Pratique pour ne modifier qu&rsquo;une seule fois les options, et non dans chaque application.<br>&#8211; En parlant des options, je n&rsquo;ai pas configur\u00e9 le persistent storage, qui utilise Cassandra. Pas forc\u00e9ment utile pour des flux froids, il peut \u00eatre important pour la gestion de la persistence de session sur la voix. Mais cela sera pour un autre tuto \ud83d\ude09<br>&#8211; A l&rsquo;inverse, si vous avez besoin d&rsquo;ORS g\u00e9rant des flux froids\/ti\u00e8des, quelques options sont \u00e0 modifier dans ORS (ou sa transaction list ;)) :<br><br>*  orchestration\\mcr-pull-by-this-node = true<br><br>* orchestration\\switch-multi-links-enabled = true (si vous avez plusieurs Interaction Server g\u00e9rant le m\u00eame switch)<br>&#8211; Enfin, pour qu&rsquo;URS utilise bien ORS, il est n\u00e9cessaire d&rsquo;ajouter \u00e0 la configuration de celui-ci :<br>* default\\Strategy = ORS<br><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Oui bon je sais, je devais continuer mes tutos sur SIP Server. Mais \u00ab\u00a0n\u00e9cessit\u00e9 fait loi\u00a0\u00bb, alors on va se faire une petite installation d&rsquo;ORS, et ceci en mode cluster. Pour rappel, le gros int\u00e9r\u00eat du mode cluster est que si vos besoins de traitement augmentent, vous pouvez tr\u00e8s facilement rajouter un nouveau noeud et &hellip; <a href=\"https:\/\/www.grutt.org\/?p=136\" class=\"more-link\">Continuer la lecture<span class=\"screen-reader-text\"> de &laquo;&nbsp;ORS, ORS everywhere&#8230;&nbsp;&raquo;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7,5,15,8],"tags":[],"class_list":["post-136","post","type-post","status-publish","format-standard","hentry","category-genesys","category-linux","category-orchestration","category-tutos"],"_links":{"self":[{"href":"https:\/\/www.grutt.org\/index.php?rest_route=\/wp\/v2\/posts\/136","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.grutt.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.grutt.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.grutt.org\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.grutt.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=136"}],"version-history":[{"count":11,"href":"https:\/\/www.grutt.org\/index.php?rest_route=\/wp\/v2\/posts\/136\/revisions"}],"predecessor-version":[{"id":152,"href":"https:\/\/www.grutt.org\/index.php?rest_route=\/wp\/v2\/posts\/136\/revisions\/152"}],"wp:attachment":[{"href":"https:\/\/www.grutt.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=136"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.grutt.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=136"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.grutt.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=136"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}