<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to Laptop_Configuration</title><link>https://sourceforge.net/p/postgres-xc/xc-wiki/Laptop_Configuration/</link><description>Recent changes to Laptop_Configuration</description><atom:link href="https://sourceforge.net/p/postgres-xc/xc-wiki/Laptop_Configuration/feed" rel="self"/><language>en</language><lastBuildDate>Fri, 27 Jun 2014 02:32:30 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/postgres-xc/xc-wiki/Laptop_Configuration/feed" rel="self" type="application/rss+xml"/><item><title>Laptop_Configuration modified by Koichi Suzuki</title><link>https://sourceforge.net/p/postgres-xc/xc-wiki/Laptop_Configuration/</link><description>&lt;div class="markdown_content"&gt;&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#what-is-in-this-page"&gt;What is in this page?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#what-we-are-configuring"&gt;What we are configuring&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#what-you-need-to-determine"&gt;What you need to determine&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#configuring-each-component"&gt;Configuring Each Component&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#starting-your-postgres-xc-cluster"&gt;Starting your Postgres-XC cluster&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#before-beginning-your-work"&gt;Before beginning your work&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#stopping-your-postgres-xc-cluster"&gt;Stopping your Postgres-XC cluster&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id="what-is-in-this-page"&gt;What is in this page?&lt;/h2&gt;
&lt;p&gt;This page describes how to configure very small Postgres-XC cluster in you laptop, with about 2GB of memory available. You need to run some 64bit Linux on you Laptop or virtual machine (for example, Virtualbox). 32bit Linux will be okay too. &lt;/p&gt;
&lt;h2 id="what-we-are-configuring"&gt;What we are configuring&lt;/h2&gt;
&lt;p&gt;We are configuring the following Postgres-XC components. If you're not familiar with them, please go back to the page &lt;span&gt;[Configuration]&lt;/span&gt;. &lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;one GTM: you need only one GTM &lt;/li&gt;
&lt;li&gt;two coordinators: you can see each coordinator provides the same database view to your application, including psql. &lt;/li&gt;
&lt;li&gt;two datanodes: you can find how Postgres-XC tables are replicated and distributed. &lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="what-you-need-to-determine"&gt;What you need to determine&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;User&lt;br /&gt;
You should determine the owner of Postgres-XC cluster (Linux user). Here, postgresxc is your Postgres-XC database cluster owner and its home directory is /home/postgresxc. &lt;/li&gt;
&lt;li&gt;Working directory&lt;br /&gt;
Each of the components needs separate working directory where various local information is stored. Let's assume the following working directory. &lt;ol&gt;
&lt;li&gt;GTM: /home/postgresxc/pgxc/gtm &lt;/li&gt;
&lt;li&gt;Coordinator: /home/postgresxc/pgxc/coord1, /home/postgresxc/pgxc/coord2 (recall we're configuring two coordinators) &lt;/li&gt;
&lt;li&gt;Datanode: /home/postgresxc/pgxc/datanode1, /home/postgresxc/pgxc/datanode2 (again, we're configuring two datanodes). &lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Node name&lt;br /&gt;
Each node needs unique node name. Let's assign the following names. &lt;ol&gt;
&lt;li&gt;GTM: gtm &lt;/li&gt;
&lt;li&gt;Cordinators: coord1 and coord2 &lt;/li&gt;
&lt;li&gt;Datanode: datanode1 and datanode2 &lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Port number&lt;br /&gt;
Each component interact each other, as well as with applications. They need unique TCP/IP port for this purpose. Because all the components runs in single server (or virtual machine), you need to assign different port number to each of them. Here, we assume: &lt;ol&gt;
&lt;li&gt;GTM: 20001, &lt;/li&gt;
&lt;li&gt;Coordinators: 20004 and 2005 for coord1 and coord2 respectively, &lt;/li&gt;
&lt;li&gt;Datanodes: 20006 and 20007 respectively. &lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Each component has similar set of resources you should assign. &lt;/p&gt;
&lt;h2 id="configuring-each-component"&gt;Configuring Each Component&lt;/h2&gt;
&lt;p&gt;Now you're ready to configure each component. Because /home/postgresxc/pgxc is the common directory to start with, let's create this directory first. &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;cd&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;home&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;postgresxc&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;mkdir&lt;/span&gt; &lt;span class="n"&gt;pgxc&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Then, please visit pages for each component as follows: &lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a class="alink" href="/p/postgres-xc/xc-wiki/Configure_GTM/"&gt;[Configure_GTM]&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;span&gt;[Configure_Coordinators]&lt;/span&gt; &lt;/li&gt;
&lt;li&gt;&lt;a class="" href="/p/postgres-xc/xc-wiki/Configure_Datanodes/"&gt;Configure Datanode&lt;/a&gt; &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Now you're ready to start you Postgres-XC cluster. &lt;/p&gt;
&lt;h2 id="starting-your-postgres-xc-cluster"&gt;Starting your Postgres-XC cluster&lt;/h2&gt;
&lt;p&gt;You have done all the configurations successfully. Congratulations. Now you can start your Postgres-XC cluster by starting each component one by one. You should start GTM first because all the other components assume that GTM is running. &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;gtm_ctl&lt;/span&gt; &lt;span class="n"&gt;start&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Z&lt;/span&gt; &lt;span class="n"&gt;gtm&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;D&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;home&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;postgresxc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;pgxc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;gtm&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Next, you start coordinators and datanodes. You can start them in the order you like, but it is a good practice to start datanode first. If you start coordinator first and your applications issue SQL statement before datanodes start, it will lead to an error. &lt;/p&gt;
&lt;p&gt;So you do like: &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;pg_ctl&lt;/span&gt; &lt;span class="n"&gt;start&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Z&lt;/span&gt; &lt;span class="n"&gt;datanode&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;D&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;home&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;postgresxc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;pgxc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;datanode1&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;o&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;-i&amp;quot;&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;pg_ctl&lt;/span&gt; &lt;span class="n"&gt;start&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Z&lt;/span&gt; &lt;span class="n"&gt;datanode&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;D&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;home&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;postgresxc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;pgxc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;datanode2&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;o&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;-i&amp;quot;&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;pg_ctl&lt;/span&gt; &lt;span class="n"&gt;start&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Z&lt;/span&gt; &lt;span class="n"&gt;coordinator&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;D&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;home&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;postgresxc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;pgxc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;coord1&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;o&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;-i&amp;quot;&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;pg_ctl&lt;/span&gt; &lt;span class="n"&gt;start&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Z&lt;/span&gt; &lt;span class="n"&gt;coordinator&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;D&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;home&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;postgresxc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;pgxc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;coord2&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;o&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;-i&amp;quot;&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Okay. All the components are up and waiting for your application to connect. &lt;/p&gt;
&lt;h2 id="before-beginning-your-work"&gt;Before beginning your work&lt;/h2&gt;
&lt;p&gt;Please note that until know, we told each component where GTM is. However, coordinators do not know where other coordinators are and where datanodes are. They're very important configuration and you should configure them here. &lt;/p&gt;
&lt;p&gt;Only coordinators need to know other nodes. Here, we use psql for this purpose and use CREATE NODE and ALTER NODE statement. At this moment, database called 'postgres' is available. So login to postgres. Because you created the database as user name psotgresxc, you're the superuser. &lt;/p&gt;
&lt;p&gt;First, you configure coord1. &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;psql&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt; &lt;span class="mi"&gt;20004&lt;/span&gt; &lt;span class="n"&gt;postgres&lt;/span&gt;
&lt;span class="cp"&gt;# create node coord2 with (type = 'coordinator', host = 'localhost', port = 20005);&lt;/span&gt;
&lt;span class="cp"&gt;# create node datanode1 with (type = 'datanode', host = 'localhost', port = 20006);&lt;/span&gt;
&lt;span class="cp"&gt;# create node datanode2 with (type = 'datanode', host = 'localhost', port = 20007);&lt;/span&gt;
&lt;span class="cp"&gt;# \q&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Then, do the similar thing for coord2. &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;psql&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt; &lt;span class="mi"&gt;20005&lt;/span&gt; &lt;span class="n"&gt;postgres&lt;/span&gt;
&lt;span class="cp"&gt;# create node coord1 with (type = 'coordinator', host = 'localhost', port = 20004);&lt;/span&gt;
&lt;span class="cp"&gt;# create node datanode1 with (type = 'datanode', host = 'localhost', port = 20006);&lt;/span&gt;
&lt;span class="cp"&gt;# create node datanode2 with (type = 'datanode', host = 'localhost', port = 20007);&lt;/span&gt;
&lt;span class="cp"&gt;# \q&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;You must do the above only at the first time you started Postgres-XC cluster. After then, you skip this process and connect your application to any of the coordinators. &lt;/p&gt;
&lt;h2 id="stopping-your-postgres-xc-cluster"&gt;Stopping your Postgres-XC cluster&lt;/h2&gt;
&lt;p&gt;You should not stop GTM while other components are running. As described in starting the cluster, it is a good habit to stop coordinator fist, then datanode and gtm. When you stop coordinator, they may hold connections to other coordinators and datanodes. To shutdown cluster calmly, you should close such internal connections. &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;psql&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt; &lt;span class="mi"&gt;30004&lt;/span&gt; &lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;CLEAN&lt;/span&gt; &lt;span class="n"&gt;CONNECTION&lt;/span&gt; &lt;span class="n"&gt;TO&lt;/span&gt; &lt;span class="n"&gt;ALL&lt;/span&gt; &lt;span class="n"&gt;FOR&lt;/span&gt; &lt;span class="n"&gt;DATABASE&lt;/span&gt; &lt;span class="n"&gt;postgres&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt; &lt;span class="n"&gt;postgres&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;psql&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt; &lt;span class="mi"&gt;30005&lt;/span&gt; &lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;CLEAN&lt;/span&gt; &lt;span class="n"&gt;CONNECTION&lt;/span&gt; &lt;span class="n"&gt;TO&lt;/span&gt; &lt;span class="n"&gt;ALL&lt;/span&gt; &lt;span class="n"&gt;FOR&lt;/span&gt; &lt;span class="n"&gt;DATABASE&lt;/span&gt; &lt;span class="n"&gt;postgres&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt; &lt;span class="n"&gt;postgres&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Please note that you should clean connection for other databases if you're using them. Then you can stop each component as follows: &lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;pg_ctl&lt;/span&gt; &lt;span class="n"&gt;stop&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Z&lt;/span&gt; &lt;span class="n"&gt;coordinator&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;D&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;home&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;postgresxc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;pgxc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;coord1&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;pg_ctl&lt;/span&gt; &lt;span class="n"&gt;stop&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Z&lt;/span&gt; &lt;span class="n"&gt;coordinator&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;D&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;home&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;postgresxc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;pgxc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;coord2&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;pg_ctl&lt;/span&gt; &lt;span class="n"&gt;stop&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Z&lt;/span&gt; &lt;span class="n"&gt;datanode&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;D&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;home&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;postgresxc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;pgxc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;datanode1&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;pg_ctl&lt;/span&gt; &lt;span class="n"&gt;stop&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Z&lt;/span&gt; &lt;span class="n"&gt;datanode&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;D&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;home&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;postgresxc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;pgxc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;datanode2&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;gtm_ctl&lt;/span&gt; &lt;span class="n"&gt;stop&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Z&lt;/span&gt; &lt;span class="n"&gt;gtm&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;D&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;home&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;postgresxc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;pgxc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;gtm&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Koichi Suzuki</dc:creator><pubDate>Fri, 27 Jun 2014 02:32:30 -0000</pubDate><guid>https://sourceforge.netac94ae2b6b60d670f74f5b85e2c9cb1eddfe956d</guid></item></channel></rss>