{"id":32318,"date":"2019-10-31T21:46:20","date_gmt":"2019-10-31T18:46:20","guid":{"rendered":"https:\/\/prohoster.info\/blog\/flexiant-cloud-orchestrator-s-chem-ego-edyat\/"},"modified":"2019-10-31T21:46:20","modified_gmt":"2019-10-31T18:46:20","slug":"flexiant-cloud-orchestrator-s-chem-ego-edyat","status":"publish","type":"post","link":"https:\/\/prohoster.info\/en\/blog\/news\/flexiant-cloud-orchestrator-s-chem-ego-edyat","title":{"rendered":"Flexiant Cloud Orchestrator: what is it used for","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Flexiant Cloud Orchestrator: what is it used for\" src=\"\/wp-content\/uploads\/2019\/04\/0a0325fe5c71eaac391afdcabee225b7.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTo provide IaaS (Virtual Data Center) services, we use <noindex><a rel=\"nofollow\" href=\"https:\/\/www.rusonyx.ru\/\">Rusonyx<\/a><\/noindex> the commercial orchestrator <noindex><a rel=\"nofollow\" href=\"https:\/\/www.flexiant.com\/flexiant-cloud-orchestrator\/\">Flexiant Cloud Orchestrator<\/a><\/noindex> (FCO). This solution has a sufficiently unique architecture that distinguishes it from the well-known Openstack and CloudStack.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex> <\/p>\n<p>As for hypervisors, the compute nodes support KVM, VmWare, Xen, Virtuozzo 6\/7, as well as containers from the same Virtuozzo. Supported storage includes local, NFS, Ceph, and Virtuozzo Storage.<\/p>\n<p>FCO supports the creation of multiple clusters and managing them from a single interface. In other words, one can manage a Virtuozzo cluster and a KVM + Ceph cluster by switching between them with a click.<\/p>\n<p>Essentially, FCO is a comprehensive solution for cloud providers that, apart from orchestration, also includes billing, with all setups, payment plugins, invoices, notifications, resellers, rates, and so on. However, the billing component cannot cover all the nuances of the Russian market, which is why we abandoned its use in favor of another solution.<\/p>\n<p>The flexible system for distributing rights over all cloud resources is very pleasing: images, disks, products, servers, firewalls \u2013 all of these can be 'shared' and rights can be granted among users, even between users of different clients. Each client can create several independent data centers in their cloud and manage them from a single control panel.<\/p>\n<p><img decoding=\"async\" alt=\"Flexiant Cloud Orchestrator: what is it used for\" src=\"\/wp-content\/uploads\/2019\/04\/11e93aef20dcd4a1bffb9ee988950658.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nArchitecturally, FCO consists of several parts, each with its independent code, and some even have their own database.<\/p>\n<p><b>Skyline<\/b> \u2013 admin and user interface<br \/>\n<b>Jade<\/b> \u2013 business logic, billing, task management<br \/>\n<b>Tigerlily<\/b> \u2013 service coordinator that manages and coordinates the exchange of information between business logic and clusters.<br \/>\n<b>XVPManager<\/b> \u2013 management of cluster elements: nodes, storage, network, and virtual machines.<br \/>\n<b>XVPAgent <\/b>\u2013 an agent installed on nodes for interaction with XVPManager<\/p>\n<p><img decoding=\"async\" alt=\"Flexiant Cloud Orchestrator: what is it used for\" src=\"\/wp-content\/uploads\/2019\/04\/f810d1624b8bcdc53144dc05e86b2e59.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWe plan to include a detailed discussion of the architecture of each component in a series of articles, if, of course, the topic creates interest.<\/p>\n<p>The main advantage of FCO stems from its \"box-like\" nature. You have the benefit of simplicity and minimalism. A single virtual machine running Ubuntu is allocated for the management node, where all necessary packages are installed. All settings are moved to configuration files in the form of variable-value pairs:<\/p>\n<pre><code class=\"plaintext\"># cat \/etc\/extility\/config\/vars\n\u2026\nexport LIMIT_MAX_LIST_ADMIN_DEFAULT=\"30000\"\nexport LIMIT_MAX_LIST_USER_DEFAULT=\"200\"\nexport LOGDIR=\"\/var\/log\/extility\"\nexport LOG_FILE=\"misc.log\"\nexport LOG_FILE_LOG4JHOSTBILLMODULE=\"hostbillmodule.log\"\nexport LOG_FILE_LOG4JJADE=\"jade.log\"\nexport LOG_FILE_LOG4JTL=\"tigerlily.log\"\nexport LOG_FILE_LOG4JXVP=\"xvpmanager.log\"\nexport LOG_FILE_VARS=\"misc.log\"\n\u2026\n<\/code><\/pre>\n<p>All configuration is initially modified in templates, and then the generator is launched.<br \/>\n#build-config \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u0444\u0430\u0439\u043b vars \u0438 \u0434\u0430\u0441\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c \u043f\u0435\u0440\u0435\u0447\u0438\u0442\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433. \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043f\u0440\u0438\u044f\u0442\u043d\u044b\u0439 \u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043b\u0435\u0433\u043a\u043e \u0437\u0430\u0431\u0440\u0435\u043d\u0434\u0438\u0440\u043e\u0432\u0430\u043d.<\/p>\n<p><img decoding=\"async\" alt=\"Flexiant Cloud Orchestrator: what is it used for\" src=\"\/wp-content\/uploads\/2019\/04\/bb9bd922497394f0fdbe9345fe67ee62.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAs you can see, the interface consists of widgets, which the user can manage easily. They can effortlessly add\/remove widgets from the page, thereby creating their desired dashboard.<\/p>\n<p>Despite its closed nature, FCO is a highly customizable system. It offers a vast number of settings and entry points for modifying the workflow:<\/p>\n<ol>\n<li>Custom plugins are supported; for example, you can write your own billing method or an external resource for user provision.<\/li>\n<li>Custom triggers for specific events are supported, such as adding the first virtual machine for a client upon their creation.<\/li>\n<li>Custom widgets in the interface are supported, such as embedding YouTube videos directly into the user interface.<\/li>\n<\/ol>\n<p>\nAll customization is written in FDL, a language based on Lua. If you know Lua, you will have no issues with FDL.<\/p>\n<p>Here\u2019s an example of one of the simplest triggers we use. This trigger prevents users from sharing their own images with other clients. We do this to ensure that one user cannot create a harmful image for others.<\/p>\n<pre><code class=\"plaintext\">function register()\n    return {\"pre_user_api_publish\"}\nend\n   \nfunction pre_user_api_publish(p)  \n    if(p==nil) then\n        return{\n            ref = \"cancelPublishImage\",\n            name = \"Cancel publishing\",\n            description = \"Cancel all user\u2019s images publishing\",\n            triggerType = \"PRE_USER_API_CALL\",\n            triggerOptions = {\"publishResource\", \"publishImage\"},\n            api = \"TRIGGER\",\n            version = 1,\n        }\n    end\n\n    -- Turn publishing off\n    return {exitState = \"CANCEL\"}\n   \nend\n<\/code><\/pre>\n<p>The register function will be called by the FCO core. It will return the name of the function that needs to be invoked. The parameter \u201cp\u201d of this function holds the context of the call, which will be empty (nil) on the first invocation. This allows us to register our trigger. In triggerType, we indicate that the trigger is called BEFORE the publishing operation and applies only to users. Naturally, we allow system administrators to publish everything. In triggerOptions, we detail the operations for which the trigger will activate.<\/p>\n<p>And most importantly \u2013 return {exitState = \u201cCANCEL\u201d}, which is exactly what the trigger was designed for. It will return failure when a user tries to share their image in the control panel.<\/p>\n<p>In FCO architecture, any object (disk, server, image, network, network adapter, etc.) is represented as a Resource entity, which has common parameters:<\/p>\n<ul>\n<li>Resource UUID<\/li>\n<li>Resource name<\/li>\n<li>Resource type<\/li>\n<li>Resource owner UUID<\/li>\n<li>Resource status (active, inactive)<\/li>\n<li>Resource metadata<\/li>\n<li>Resource keys <\/li>\n<li>Product UUID to which the resource belongs<\/li>\n<li>Resource VDC<\/li>\n<\/ul>\n<p>\nThis is very convenient when working with the API, as all resources are handled uniformly. Products are set up by the provider, and customers order them. Since our billing is handled separately, the customer can freely order any product from the panel without charge. Billing will be processed later. A product can be an IP address per hour, an additional GB of disk per hour, or simply a server.<\/p>\n<p>Keys can be used to label specific resources to change how they are managed. For example, we can tag three physical nodes with the Weight key and label some clients with the same key, thereby allocating these nodes specifically to those clients. This mechanism is used for VIP clients who prefer not to have neighbors near their VMs. The functionality can be applied much more broadly. <\/p>\n<p>The licensing model involves payment for each CPU core of the physical node. The cost is also influenced by the number of cluster types. If KVM and VMware are planned to be used together, the license cost will increase.<\/p>\n<p>FCO is a full-fledged product with very rich functionality, so we plan to prepare several articles detailing the operation of the network component.<\/p>\n<p>After working with this orchestrator for several years, we can note it as quite solid. Unfortunately, the product is not without flaws:<\/p>\n<ul>\n<li>we had to optimize the database, as queries began to lag when the amount of data in them increased;<\/li>\n<li>after one failure due to a bug, the recovery mechanism failed, and we had to restore the machines of unfortunate clients with our own set of scripts;<\/li>\n<li>the node unavailability detection mechanism is embedded in the code and is not customizable. That is, we cannot create our own policies for determining node unavailability.<\/li>\n<li>Logging is not always detailed. Sometimes, when you need to delve very deeply to troubleshoot a specific issue, the source code of some components lacks for understanding the reasons.<\/li>\n<\/ul>\n<p>\n<b>TOTAL: <\/b>Overall, the impressions of the product are positive. We are in constant contact with the orchestrator developers. The team is open to constructive collaboration.<\/p>\n<p>Despite its simplicity, FCO offers extensive functionality. In future articles, we plan to delve into the following topics:<\/p>\n<ul>\n<li>network organization in FCO<\/li>\n<li>ensuring live-recovery and FQP protocol<\/li>\n<li>writing custom plugins and widgets<\/li>\n<li>connecting additional services, such as Load Balancer and Acronis<\/li>\n<li>backup<\/li>\n<li>a unified mechanism for configuring and setting up nodes<\/li>\n<li>processing virtual machine metadata<\/li>\n<\/ul>\n<p>\n<b>P.S. <\/b>Feel free to comment if you're interested in other aspects. Stay tuned!<br \/>\n<br \/>Source: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/rusonyx\/blog\/449196\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0414\u043b\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u0441\u043b\u0443\u0433\u0438 IaaS (\u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0434\u0430\u0442\u0430-\u0446\u0435\u043d\u0442\u0440) \u043c\u044b \u0432 Rusonyx \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0439 \u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0430\u0442\u043e\u0440 Flexiant Cloud Orchestrator (FCO). \u042d\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443, \u0447\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442 \u0435\u0433\u043e \u043e\u0442 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0445 \u0448\u0438\u0440\u043e\u043a\u043e\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0435 Openstack \u0438 CloudStack. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0433\u0438\u043f\u0435\u0440\u0432\u0438\u0437\u043e\u0440\u043e\u0432 compute \u043d\u043e\u0434 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f KVM, VmWare, Xen, Virtuozzo6\/7, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u043e\u0442 \u0442\u043e\u0433\u043e \u0436\u0435 Virtuozzo. \u0418\u0437 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449 \u2013 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0435, NFS, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":24135,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-32318","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0414\u043b\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u0441\u043b\u0443\u0433\u0438 IaaS (\u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/en\/blog\/news\/flexiant-cloud-orchestrator-s-chem-ego-edyat\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Flexiant Cloud Orchestrator: \u0441 \u0447\u0435\u043c \u0435\u0433\u043e \u0435\u0434\u044f\u0442 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0414\u043b\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u0441\u043b\u0443\u0433\u0438 IaaS (\u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/en\/blog\/news\/flexiant-cloud-orchestrator-s-chem-ego-edyat\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:46:20+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:46:20+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Flexiant Cloud Orchestrator: what you need to know | ProHoster","description":"To provide the IaaS service (Virtual.","canonical_url":"https:\/\/prohoster.info\/en\/blog\/news\/flexiant-cloud-orchestrator-s-chem-ego-edyat","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"en_US","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Flexiant Cloud Orchestrator: \u0441 \u0447\u0435\u043c \u0435\u0433\u043e \u0435\u0434\u044f\u0442 | ProHoster","og:description":"\u0414\u043b\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u0441\u043b\u0443\u0433\u0438 IaaS (\u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439.","og:url":"https:\/\/prohoster.info\/en\/blog\/news\/flexiant-cloud-orchestrator-s-chem-ego-edyat","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:46:20+00:00","article:modified_time":"2019-10-31T18:46:20+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"32318","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 10:19:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:00:23","updated":"2026-01-21 10:19:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/32318","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/comments?post=32318"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/32318\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media\/24135"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media?parent=32318"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/categories?post=32318"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/tags?post=32318"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}