I have a server created in "eu-west-1c" availability zone and I tried to attach the volume created in "eu-west-1a" availability zone to "eu-west-1c" but the server created in "eu-west-1c" is not reachable. Is it any way to attach among different availability zones?
From the AWS documentation.
When you create an EBS volume in an Availability Zone, it is automatically replicated within that zone to prevent data loss due to failure of any single hardware component. After you create a volume, you can attach it to any EC2 instance in the same Availability Zone.
Amazon EBS provides the ability to create snapshots (backups) of any EBS volume and write a copy of the data in the volume to Amazon S3, where it is stored redundantly in multiple Availability Zones. The volume does not need be attached to a running instance in order to take a snapshot. As you continue to write data to a volume, you can periodically create a snapshot of the volume to use as a baseline for new volumes. These snapshots can be used to create multiple new EBS volumes or move volumes across Availability Zones.
Here's some background for you about regions and availability zones, which you appear confused in your question.
Amazon EC2 is hosted in multiple locations world-wide. These locations are composed of regions and Availability Zones. Each region is a separate geographic area. Each region has multiple, isolated locations known as Availability Zones. Amazon EC2 provides you the ability to place resources, such as instances, and data in multiple locations. Resources aren't replicated across regions unless you do so specifically.
You can choose the availability zone when you create a snapshot of any EBS volume. For example you can create a volume in "eu-west-1c" out of a snapshot present in "eu-west-1a".
But if you want to transfer it to another region you can use the AWS Management Console or the AWS CLI.
You can read more about replicating AWS EBS volumes and the impacts of this replications on in this blog post by NetApp.
The EBS Volumes attached to the EC2 Instance will always have to remain in the same availability zone as the EC2 Instance. Possible reason to this is because of the fact that EBS Volumes are present outside of the host machine and instances have to be connected over the network, if the EBS Volumes are present outside the Availability Zone there can be potential latency issues and subsequent performance degradation.
What you can do in such scenario is, get the Snapshot of the EBS Volume (Snapshot sequentially captures the state of your EBS Volume and stores it in S3 Bucket (friendly reminder that it will cost you man) ) and post that you have two options , you can either create an EBS Volume from this snapshot in your desired Availability Zone or you can create an AMI from this snapshot in your desired Availability Zone and then go ahead and launch your EC2 instance from it.