<?xml version="1.0" encoding="utf-8"?>

<feed xmlns="http://www.w3.org/2005/Atom" >
  <generator uri="https://jekyllrb.com/" version="3.8.7">Jekyll</generator>
  <link href="https://example.github.io/feed.xml" rel="self" type="application/atom+xml" />
  <link href="https://example.github.io/" rel="alternate" type="text/html" />
  <updated>2020-07-11T10:09:07+00:00</updated>
  <id>https://example.github.io/</id>

  
    <title type="html">Alexey Siretskiy</title>
  

  
    <subtitle>Write an awesome description for your new site here. You can edit this line in _config.yml. It will appear in your document head meta (for Google search results) and in your feed.xml site description.</subtitle>
  

  

  
  
    <entry>
      <title type="html">Cluster monitoring</title>
      <link href="https://example.github.io/2018/07/24/project-6/" rel="alternate" type="text/html" title="Cluster monitoring" />
      <published>2018-07-24T00:00:00+00:00</published>
      <updated>2018-07-24T00:00:00+00:00</updated>
      <id>https://example.github.io/2018/07/24/project-6</id>
      <content type="html" xml:base="https://example.github.io/2018/07/24/project-6/">&lt;p&gt;On-premise solution for monitoring isolated clusters been established.
The various metrics from every node is collected with the &lt;code&gt;collectd&lt;/code&gt; package, which sending the data to the &lt;code&gt;Grafana&lt;/code&gt; monitoring server, where
the data is being stored in the &lt;code&gt;influxdb&lt;/code&gt; to be displayed with &lt;code&gt;Grafana&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The firewall rules were enabled to allow static routing on &lt;code&gt;UPD 25826&lt;/code&gt; port to make possible for isolated clusters to communicate with the monitoring server.&lt;/p&gt;

&lt;p&gt;Also &lt;code&gt;Grafana&lt;/code&gt; was configured to send alerting messages to the dedicated &lt;code&gt;Slack&lt;/code&gt; channel in the case of potential  node health issues in real time.
The messages could be configured to be sent  to different devices – smartphone or  desktop.&lt;/p&gt;</content>

      
      
      
      
      

      <author>
          <name></name>
        
        
      </author>

      

      

      
        <summary type="html">On-premise solution for monitoring isolated clusters been established. The various metrics from every node is collected with the collectd package, which sending the data to the Grafana monitoring server, where the data is being stored in the influxdb to be displayed with Grafana.</summary>
      

      
      
    </entry>
  
    <entry>
      <title type="html">web-server development</title>
      <link href="https://example.github.io/2018/03/28/project-5/" rel="alternate" type="text/html" title="web-server development" />
      <published>2018-03-28T00:00:00+00:00</published>
      <updated>2018-03-28T00:00:00+00:00</updated>
      <id>https://example.github.io/2018/03/28/project-5</id>
      <content type="html" xml:base="https://example.github.io/2018/03/28/project-5/">&lt;p&gt;I have been involved in development and support of both types of Web Servers – dynamic and static.&lt;/p&gt;

&lt;p&gt;The former involves from big projects with Django as CMS with   University HPC cluster as the backend, and  small web-apps powered by Flask.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;webserver for Protein Simulation &lt;a href=&quot;http://gpcr-modsim.org&quot;&gt;GPCR-MODSIM&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;internal Flask apps&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The latter involves the Jekyll-generated websites:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Combient AB &lt;a href=&quot;https://combient.com&quot;&gt;website&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://siretskiy.org&quot;&gt;personal webpage&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</content>

      
      
      
      
      

      <author>
          <name></name>
        
        
      </author>

      

      

      
        <summary type="html">I have been involved in development and support of both types of Web Servers – dynamic and static.</summary>
      

      
      
    </entry>
  
    <entry>
      <title type="html">ReadTheDocs setup</title>
      <link href="https://example.github.io/2018/03/24/project-4/" rel="alternate" type="text/html" title="ReadTheDocs setup" />
      <published>2018-03-24T00:00:00+00:00</published>
      <updated>2018-03-24T00:00:00+00:00</updated>
      <id>https://example.github.io/2018/03/24/project-4</id>
      <content type="html" xml:base="https://example.github.io/2018/03/24/project-4/">&lt;p&gt;The &lt;a href=&quot;https://readthedocs.org&quot;&gt;ReadTheDocs&lt;/a&gt; is online service which allows to host docs for free. But what if the docs are for internal use or describing  the commercial project?&lt;/p&gt;

&lt;p&gt;Here comes the localized or forked version of ReadTheDocs!
It gives all the advantages but keep your code and docs in private, allowing access only from the inside the company’s network.&lt;/p&gt;</content>

      
      
      
      
      

      <author>
          <name></name>
        
        
      </author>

      

      

      
        <summary type="html">The ReadTheDocs is online service which allows to host docs for free. But what if the docs are for internal use or describing the commercial project?</summary>
      

      
      
    </entry>
  
    <entry>
      <title type="html">VPN-accessed cluster factory</title>
      <link href="https://example.github.io/2018/03/24/project-3/" rel="alternate" type="text/html" title="VPN-accessed cluster factory" />
      <published>2018-03-24T00:00:00+00:00</published>
      <updated>2018-03-24T00:00:00+00:00</updated>
      <id>https://example.github.io/2018/03/24/project-3</id>
      <content type="html" xml:base="https://example.github.io/2018/03/24/project-3/">&lt;p&gt;Sometimes public cloud is not a decent solution for your needs.
When instead a bunch of on-premises clusters could be an option.&lt;/p&gt;

&lt;p&gt;The distinguished features are:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;the clusters, being on different &lt;code&gt;VLAN&lt;/code&gt;s, are isolated from each other by default. However, that could be tuned immediately by changing the  rules on the firewall.
This allows to scale up and down the cluster, but in a &lt;strong&gt;blob&lt;/strong&gt;  manner, which is not an option for most of public clouds&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;the local DNS service is enabled for all the clusters globally. The &lt;code&gt;cron&lt;/code&gt; job  performs scheduled scans of clusters, creating a global DNS table, served by &lt;code&gt;DNSmasq&lt;/code&gt;. So when allowed all the hosts on all clusters can talk to each other by names, not IPs.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;the provision of the nodes is done through PXE-booting with &lt;code&gt;Cobbler&lt;/code&gt; using the local mirror for Linux distributions and packages&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;the remote access is established via secure VPN connection&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The clusters are being established and provisioned in a largely automatic manner, which leads to reproducibility and fast deployment time.&lt;/p&gt;</content>

      
      
      
      
      

      <author>
          <name></name>
        
        
      </author>

      

      

      
        <summary type="html">Sometimes public cloud is not a decent solution for your needs. When instead a bunch of on-premises clusters could be an option.</summary>
      

      
      
    </entry>
  
    <entry>
      <title type="html">Open Nebula setup</title>
      <link href="https://example.github.io/2018/03/23/project-1/" rel="alternate" type="text/html" title="Open Nebula setup" />
      <published>2018-03-23T00:00:00+00:00</published>
      <updated>2018-03-23T00:00:00+00:00</updated>
      <id>https://example.github.io/2018/03/23/project-1</id>
      <content type="html" xml:base="https://example.github.io/2018/03/23/project-1/">&lt;p&gt;The &lt;a href=&quot;https://opennebula.org&quot;&gt;Open Nebula&lt;/a&gt; is a solid approach to orchestrate a bunch of virtual machines (VMs).
Cloud helps to  create and provision VMs carrying the needed services, which are, perhaps,
not very suitable for running in Docker containers.&lt;/p&gt;

&lt;!-- ![ON](/img/portfolio/on.jpg){:class=&quot;img-responsive&quot;} --&gt;

&lt;p&gt;The setup is built on Intel NUCs and configured to operate in Highly Available mode with  3 front-ends,
meaning that the service functionality will remain, even:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;if one of the front-ends degrades&lt;/li&gt;
  &lt;li&gt;the worker NUC or the VM running inside will fail&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The storage is NFS-attached from the Synology NAS solution (RAID5).&lt;/p&gt;</content>

      
      
      
      
      

      <author>
          <name></name>
        
        
      </author>

      

      

      
        <summary type="html">The Open Nebula is a solid approach to orchestrate a bunch of virtual machines (VMs). Cloud helps to create and provision VMs carrying the needed services, which are, perhaps, not very suitable for running in Docker containers.</summary>
      

      
      
    </entry>
  
    <entry>
      <title type="html">Hadoop setup</title>
      <link href="https://example.github.io/2018/03/21/project-2/" rel="alternate" type="text/html" title="Hadoop setup" />
      <published>2018-03-21T00:00:00+00:00</published>
      <updated>2018-03-21T00:00:00+00:00</updated>
      <id>https://example.github.io/2018/03/21/project-2</id>
      <content type="html" xml:base="https://example.github.io/2018/03/21/project-2/">&lt;p&gt;Hadoop/Spark cluster (50 CPU cores/200 GB RAM/ 40 TB disk space) is suitable for solving medium size tasks in Data Science, Bioinformatics and similar data intensive domains.&lt;/p&gt;

&lt;p&gt;Neglecting a separate fat (128 GB RAM, 20 cores) node, the cluster setup  is pretty compact, and can reside on the desk, still demanding less then 1 kW of energy and being reasonably quite even under the high load.&lt;/p&gt;

&lt;p&gt;The cluster expansion is easy due to user-friendly Apache Ambari.
The NUCs are supplied with 1 Gbit NIC, so USB3-connected HDDs are not the performance bottleneck. The portable HDDs, even not providing the top performance, are truly easy to change and add new ones, reaching 80-100 TB.&lt;/p&gt;

&lt;p&gt;Spark is being utilized by the Machine Learning tasks. The &lt;a href=&quot;http://jupyter.org&quot;&gt;Jupyter&lt;/a&gt; web-based Notebook is running on the fat node and used for coding. The jobs can be:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;submitted  to run on the cluster&lt;/li&gt;
  &lt;li&gt;running locally on the fat node&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The Jupyter kernel is configured so that the Spark driver resides on the fat node with 128 GB RAM, helping Data Scientists make interactive analysis in the Jupyter notebook.&lt;/p&gt;</content>

      
      
      
      
      

      <author>
          <name></name>
        
        
      </author>

      

      

      
        <summary type="html">Hadoop/Spark cluster (50 CPU cores/200 GB RAM/ 40 TB disk space) is suitable for solving medium size tasks in Data Science, Bioinformatics and similar data intensive domains.</summary>
      

      
      
    </entry>
  
</feed>
